DispatchQueue同步与并发队列中的同步屏障

问题描述 投票:0回答:2

我正在穿越DispatchQueue障碍,并注意到async(flags: .barrier)sync(flags: .barrier)有两种方法>

我理解异步屏障的用法,但与同步屏障相混淆。

我的困惑是我想做的任务也可以与此一起执行

DispatchQueue.global().sync {

}

那么,同步屏障的用途是什么?为什么使用它们?以及这有何不同。

DispatchQueue.global().sync(flags: .barrier) {

}

我正在经历DispatchQueue障碍,并且注意到async(flags:.barrier)和sync(flags:.barrier)都有两种方式,我理解了异步障碍的用法,但与sync混淆了...

swift concurrency grand-central-dispatch shared-memory
2个回答
1
投票

这里有两件事要考虑:


1
投票

Lutz says(+1)处,sync / async和障碍是两个完全不同的问题。sync/ async指示调用线程的行为(即它是否等待)。屏障决定了将其调度到的队列的行为(是否允许它与该队列中的任何其他调度的块同时运行)。

© www.soinside.com 2019 - 2024. All rights reserved.