5

我的理解是// 001获得高优先级并发队列

// 001
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);

// 002创建一个新的自定义串行队列

// 002
dispatch_queue_t queue = dispatch_queue_create("bgQueue", NULL);

我的问题是,是否有可能其他进程(在 iPhone、其他应用程序等上)将在全局队列中排队,因此您可能需要等待(尽管短暂)才能执行。如果是这种情况,最好总是在您知道自己拥有唯一访问权限的地方创建自定义队列?

4

1 回答 1

9
  • 001 获取高优先级队列,而不是创建。三个全局队列是为您的应用程序自动创建的;它们总是可用的。
  • 这三个全局队列仅在您的应用程序中是全局的,就像全局变量是全局的一样。这些队列对于创建它们的每个应用程序仍然是私有的。
  • 私有队列和全局队列之间的主要区别在于私有队列顺序的,而全局队列是并发的。两者的区别总结在GCD 文档的表 3-1 中编辑:在 OS X v10.7 及更高版本中,私有队列现在也可以通过传递并发DISPATCH_QUEUE_CONCURRENT(感谢 Rob 的更正)。
于 2012-09-04T16:49:25.653 回答