目标C:没有@synchronized的整数的原子递减?

7 properties atomic objective-c synchronized race-condition

如果我使用

@property (atomic,assign) int value;
Run Code Online (Sandbox Code Playgroud)

然后像这样访问它

self.value--;
Run Code Online (Sandbox Code Playgroud)

那是原子的减量吗?因为如果我必须这样做:

self.value = self.value - 1;
Run Code Online (Sandbox Code Playgroud)

那么我确信在读和写之间可能存在竞争条件.

我的直觉当然是这样做

@synchronized(self) { value--; }
Run Code Online (Sandbox Code Playgroud)

但我被告知这不是犹太人.

谢谢.

Bri*_*ker 14

尝试使用Apple的本文所述的OSAtomicIncrement和OSAtomicDecrement .

self.value = self.value - 1;          
Run Code Online (Sandbox Code Playgroud)

无论属性如何定义,都不会是原子的.