NSOperationQueue 和并发操作

Posted

技术标签:

【中文标题】NSOperationQueue 和并发操作【英文标题】:NSOperationQueue and concurrent operation 【发布时间】:2011-01-12 09:34:50 【问题描述】:

正如NSOperationQueue 类参考所说: 在 ios 中,操作队列不使用Grand Central Dispatch 来执行操作。它们为非并发操作创建单独的线程,并从当前线程启动并发操作。

但我发现在 iOS 4.2.1 中,队列总是为并发或非并发操作创建线程。而且我认为队列根本不在乎并发或非并发,因为 isConcurrent 中的断点永远不会被打破。所以我认为参考是错误的......

【问题讨论】:

【参考方案1】:

如果您查看 NSOperation 的文档,您应该会看到有关 Mac 10.6(大致对应于 iOS 4.0)忽略 isConcurrent 的注释。

基本上,创建并发 NSOperation 的唯一原因是您要手动触发它。

【讨论】:

【参考方案2】:

NSOperationQueue 确实使用 GCD。来自the documentation:

在 iOS 4 及更高版本中,操作队列使用 Grand Central Dispatch 来执行操作。

【讨论】:

以上是关于NSOperationQueue 和并发操作的主要内容,如果未能解决你的问题,请参考以下文章

NSOperationNSOperationQueue(II)

NSOperationQueue 串行 FIFO 队列

CoreData 并发 - 我需要一个单独的 NSOperationQueue 吗?

并发 NSOperationQueue 上传,后跟单个任务

iOS开发-面试总结(十五)

(iOS) dispatch_async() 与 NSOperationQueue