ios - GCD中的dispatch_barrier_async和串行队列,它们有什么区别?

标签 ios multithreading grand-central-dispatch barrier

我发现dispatch_barrier_async的工作机制是,只有在之前加入队列的所有block都完成后才会执行。它的工作方式类似于串行队列。

因此,我不去区分这两种运行模式在GCD中的区别。

enter image description here

最佳答案

dispatch_barrier_[a]sync 旨在与并发队列一起使用。它们还应与对 dispatch_[a]sync 的调用一起使用。

常见的用法是“多读者,一个作者”模式。您设置了一个并发队列。对于“阅读器” block ,您使用 dispatch_[a]sync。对于“编写器” block ,您使用 dispatch_barrier_[a]sync

此设置允许并发读取,但一次只允许一个写入器,并且在写入时不允许读取。

将此与串行队列进行比较,在串行队列中一次只能发生一个 block 。

关于ios - GCD中的dispatch_barrier_async和串行队列,它们有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39802986/

相关文章:

ios - Swift 中闭包中的 $0 代表什么?

ios - 在 Swift 中使用多行获取 UILabel 高度

javascript - Worker 构造函数是否接受相对 URL?

c++ - QDir::remove() 在特定 SLOT 中调用时总是导致崩溃

ios - 使用 AudioKit 将麦克风输入的声音实时转换为音符

ios - 无法缩放 UIImageView

ios - iOS代码跳过dispatch_async

iOS:在进程中间停止线程/方法

c# - C# 中的线程

ios - Sprite Kit 中可重用的多线程实现