DISPATCH_QUEUE_CONCURRENT 和全局并发调度队列有什么区别
what is the difference between DISPATCH_QUEUE_CONCURRENT and Global Concurrent Dispatch Queues
我在苹果文档中读到 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()returns这四个队列之一。
如果需要,您可以创建自己的队列并在不再需要时将其删除。
您正在阅读有关障碍的内容:全局队列被每个人使用。在 每个人 使用的队列中使用屏障可以说是非常不礼貌的。这就是为什么你不应该在全局队列中使用障碍,只能在你自己创建的队列中使用。
在第一种情况下,您请求的是为您的应用程序提供的 "global queues" 之一。 "Anyone, anywhere, in your app" 只需询问 dispatch_get_global_queue()
即可轻松获得对该队列的引用。实际上,队列是单例。而且,几乎所有 时间,这就是您所需要的。 OS 可以帮助您构建它们,并让每个人(在您的应用程序中)都能轻松访问它们。
dispatch_queue_create()
在您真正需要 "another queue." 的极少数情况下使用它就像所有其他队列一样绑定到您的应用程序,但您自己管理它。您必须为应用程序的其他部分提供一些方法来获取该队列句柄。例如,如果在您的设计中 确实 需要将不同类型的请求放入不同的队列,您可能会这样做。
而且,正如我所说,大多数 时间,全局队列就是您真正需要的。 (OS 使它们 "really handy,",这就是 为什么 它们是 "really handy.")通常,您 "put lots of messages on just a few queues,"读者和作者之间的多或多对多或多对一关系。
我在苹果文档中读到 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()returns这四个队列之一。
如果需要,您可以创建自己的队列并在不再需要时将其删除。
您正在阅读有关障碍的内容:全局队列被每个人使用。在 每个人 使用的队列中使用屏障可以说是非常不礼貌的。这就是为什么你不应该在全局队列中使用障碍,只能在你自己创建的队列中使用。
在第一种情况下,您请求的是为您的应用程序提供的 "global queues" 之一。 "Anyone, anywhere, in your app" 只需询问 dispatch_get_global_queue()
即可轻松获得对该队列的引用。实际上,队列是单例。而且,几乎所有 时间,这就是您所需要的。 OS 可以帮助您构建它们,并让每个人(在您的应用程序中)都能轻松访问它们。
dispatch_queue_create()
在您真正需要 "another queue." 的极少数情况下使用它就像所有其他队列一样绑定到您的应用程序,但您自己管理它。您必须为应用程序的其他部分提供一些方法来获取该队列句柄。例如,如果在您的设计中 确实 需要将不同类型的请求放入不同的队列,您可能会这样做。
而且,正如我所说,大多数 时间,全局队列就是您真正需要的。 (OS 使它们 "really handy,",这就是 为什么 它们是 "really handy.")通常,您 "put lots of messages on just a few queues,"读者和作者之间的多或多对多或多对一关系。