2010-04-08 37 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