1
如果我理解正確,應該使用OSAtomicIncrement64
以原子方式增加一個變量。使用下面的一種或另一種方案有什麼區別/優勢?OSAtomicIncrement64 x類屬性...有什麼優勢?
方案1
@interface MyClass : NSObject {
__block volatile int64_t variable;
}
和
OSAtomicIncrement64(&variable);
一個塊內或
方案2
@interface MyClass : NSObject
@property(atomic, assign) int64_t variable;
和
self.variable++;
塊裏面?
我已經意識到了發佈之後的volatile和__block部分。小心澄清你最後的短語? *該屬性對於閱讀也是原子性的,但是如果寫入是原子性的,那麼這通常不是問題。* – SpaceDog
好吧,我想不出任何例子,如果寫入是原子性的,非原子讀取會成爲問題,但我沒有我不想寫一個絕對的,因爲可能會有一些。 – Avi
其實,沒關係。這個例子很明顯:讀一半的64位數字,讓一個寫作者自動更新它,讀另一半。繁榮! – Avi