2010-04-08 48 views
3

我想在我的应用程序中使用NSOperations来解决线程问题。我已经阅读了一些教程,现在我知道我必须做什么,但我有一个问题。每个班级必须有相同的NSOperationQueue。如果我在每个班级中使用新的NSOperationQueue,该怎么办?会有并发问题吗?多个NSOperationQueues?

回答

4

如果您从多个线程访问资源,则只有并发问题。如果你的操作不共享一些资源,你应该没问题,即使有多个NSOperationQueue在运行(NSOperationQueue在内部也会运行多个线程)。

如果您在多个线程之间共享一个NSOperationQueue,则应该同步对它的调用(使用@synchronized(...))。

+9

实际上,文档中指出“多核注意事项: 从多个线程使用单个NSOperationQueue对象是安全的,不需要创建额外的锁来同步对该对象的访问。”因此添加同步呼叫是多余的。 http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/NSOperationQueue_class/Reference/Reference.html#//apple_ref/doc/uid/TP40004592-RH2-SW5 – mikelikespie 2011-01-20 02:07:27

+0

但这只是为了像这样的电话将任务添加到NSOperationQueue。如果NSOperationQueue是并发的,那么实际的任务可以在多个线程上运行,所以任务不能彼此支持。 – gnasher729 2015-02-26 00:01:50