最好使用全局或自定义命名的GCD队列?

fuz*_*oat 4 iphone cocoa-touch objective-c grand-central-dispatch

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

// 001
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
Run Code Online (Sandbox Code Playgroud)

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

// 002
dispatch_queue_t queue = dispatch_queue_create("bgQueue", NULL);
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否有可能其他进程(在iPhone上,其他应用程序等)将在全局队列中排队,因此您可能必须等待(尽管是短暂的)执行.如果是这种情况,最好始终创建您知道自己可以访问的自定义队列吗?

das*_*ght 8

  • 001 得到高优先级队列,而不是创建它.将自动为您的应用程序创建三个全局队列; 它们随时可用.
  • 这三个全局队列仅在您的应用程序中是全局的,与全局变量是全局的一样.这些队列对于创建它们的每个应用程序仍然是私有的.
  • 私人和全局队列之间的主要区别使用的是私有队列顺序,而全球的队列是并发的.两者之间的差异总结在GCD文档的表3-1中.编辑:在OS X v10.7及更高版本中,私有队列现在也可以通过传递DISPATCH_QUEUE_CONCURRENT(谢谢,Rob,用于更正).