2010-06-04 26 views
0

我有一個自定義模型類與NSMutableData伊娃將被自定義NSOperation子類訪問(使用N​​SOperationQueue)。我想我可以保證通過使用依賴關係從多個NSOperations線程安全地訪問ivar,並且我可以保證我不會通過等待Q完成所有操作而從其他代碼(比如我的主應用程序線程)訪問ivar 。使用NSOperationQueue(iPhone)時模型類中的非原子屬性?

我應該使用非原子性質規範還是保持原子性?對性能有重大影響嗎?

回答

1

安德魯,是否重要取決於你在做什麼。如果您的操作正在將電影上傳到YouTube,並且每次操作都需要讀取一次數據,那麼它沒有絲毫差別 - 只需將其保留爲原子。

否則,您需要配置文件以查看它是否有意義。如果你確定(你沒有確定),NSMutableData將永遠不會同時從兩個或多個線程訪問(不管你是這樣做,鎖定,屏障還是等待),那麼你不需要它是原子的。

0

不成熟的優化是萬惡之源。

讓它保持原子狀態,直到您確定存在性能問題。

+0

我想你不知道你做的是一切邪惡的根源。 – Ricardo 2012-01-19 16:05:22

0

如果它是一個可變對象,那麼你最大的敵人是併發變異,而不是不一致的屬性訪問。

+0

是的,我同意 - 謝謝澄清!這就是我想要保護的:併發突變。那麼......你知道ObjC的那些成語嗎? – 2010-06-10 21:23:58

+0

一般的答案是使屬性不可變,並提供同步方法(或操作隊列)作爲進行更改的唯一方法。在你的情況下如何工作真的取決於你自己的應用程序的需求。 – 2010-06-11 12:15:32

相關問題