【发布时间】:2011-12-08 16:15:25
【问题描述】:
我有一个使用 GCD 的具有多线程功能的 iPad 应用程序。
当我需要做某种类型的后台处理时,我使用以下代码:
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ -backgroundProcessing- }**
所以我的两个问题是:
1) 由于我已将 ALL 的后台处理添加到同一个队列中,并且队列总是从 FIFO 出列,它们还会同时运行吗?我假设他们会,但我不确定。
2) 根据 Apple-Docs 我已经知道了
系统为每个应用程序提供三个并发调度 排队。这些队列对于应用程序是全局的,并且是 仅按优先级区分。
但是,由于我的处理不需要 DISPATCH_QUEUE_PRIORITY_HIGH、DISPATCH_QUEUE_PRIORITY_LOW 或 DISPATCH_QUEUE_PRIORITY_BACKGROUND,将我所有的后台处理放在 DISPATCH_QUEUE_PRIORITY_DEFAULT 全局队列上是否可取/好的/良好做法/无论如何/?或者我应该开始创建自定义队列,以便我可以使用多个。而且,如果我确实创建更多队列,会不会有任何性能提升?
【问题讨论】:
-
我强烈建议您创建自己的队列并保留对它的引用。这样你就知道它们在自己的线程上执行。
标签: objective-c cocoa objective-c-blocks grand-central-dispatch