ios - DISPATCH_QUEUE_CONCURRENT和全局并发调度队列之间有什么区别

标签 ios multithreading grand-central-dispatch

我在Apple文档中阅读了here,该文档用于创建并发队列,DISPATCH_QUEUE_CONCURRENT和全局并发调度队列都可以使用,但是我不确定两者之间的区别是什么。

前任。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ });


dispatch_queue_t queue = dispatch_queue_create("custom",DISPATCH_QUEUE_CONCURRENT);

dispatch_async(queue, ^{ });

我读了一些关于障碍的文章,但不确定如何将它们与这两者联系起来。有人可以解释这两种情况的用例吗?

最佳答案

共有四个全局并发队列,每个队列分别对应四个不同的优先级,这些优先级始终存在,并且在需要时始终存在。因此,您无需创建并发队列即可在后台执行某些块。 dispatch_get_global_queue()返回这四个队列之一。

您可以根据需要创建自己的队列,并在不再需要它们时将其删除。

您正在阅读的关于障碍的内容:每个人都使用全局队列。在每个人都使用的队列中使用屏障,这是非常不礼貌的。这就是为什么您不应该在全局队列中使用障碍,而只能在您自己创建的队列中使用障碍。

关于ios - DISPATCH_QUEUE_CONCURRENT和全局并发调度队列之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30234847/

相关文章:

audio - 低录音音量结合 AVAudioSessionCategoryPlayAndRecord

java - Java 可以理解同名的线程是不同的线程吗?

使用 pthread.h 进行多线程 C 编程

swift - dispatch_after 时间立即触发

swift - 有没有办法取消 DispatchQueue concurrentPerform 操作?

ios - 为什么减少间隔不会加快 iOS 计时器的执行速度?

ios - 在 performBlockAndWait block 内执行获取请求时核心数据死锁

ios - 哪种 GPUImage 填充模式适用于所有 iPhone 尺寸的全屏?

ios - 在 swift 4.2 中交换数组值时检测到致命访问冲突

c# - 线程运行时回收IIS进程