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

E.x.

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()返回这四个队列之一。

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

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

07-26 06:59