我正在穿越DispatchQueue障碍,并注意到async(flags: .barrier)
和sync(flags: .barrier)
有两种方法>
我理解异步屏障的用法,但与同步屏障相混淆。
我的困惑是我想做的任务也可以与此一起执行
DispatchQueue.global().sync { }
那么,同步屏障的用途是什么?为什么使用它们?以及这有何不同。
DispatchQueue.global().sync(flags: .barrier) {
}
我正在经历DispatchQueue障碍,并且注意到async(flags:.barrier)和sync(flags:.barrier)都有两种方式,我理解了异步障碍的用法,但与sync混淆了...
这里有两件事要考虑:
在Lutz says(+1)处,sync
/ async
和障碍是两个完全不同的问题。sync
/ async
指示调用线程的行为(即它是否等待)。屏障决定了将其调度到的队列的行为(是否允许它与该队列中的任何其他调度的块同时运行)。