我已经经历了许多关于原子和非原子属性的答案。但是我无法理解原子属性是否是线程安全的?请用一个例子解释一下。
答案 0 :(得分:1)
/ 一个原子属性是线程安全的。这就是原子性所代表的。
<强>注意强>
但两个原子属性对彼此都不是线程安全的,也不是原子属性线程安全的内容。 (听起来有点令人困惑,但有人说)
这意味着您始终可以保证能够从属性中读取完整功能的值,没有损坏的指针或中间的null或任何内容。
但是你不能保证该原子属性中的值是线程安全的。这是一个完全不同的话题。
使类的所有属性都不会使类本身成为线程安全的。
答案 1 :(得分:0)
属性访问器是线程安全的。基本上原子属性相当于:
- (id)atomicProperty {
@synchronized(self) {
return _atomicProperty;
}
}
- (void)setAtomicProperty:(id)atomicProperty {
@synchronized(self) {
_atomicProperty = atomicProperty;
}
}