原子属性线程安全吗?

时间:2015-11-15 18:20:33

标签: objective-c properties thread-safety atomic

我已经经历了许多关于原子和非原子属性的答案。但是我无法理解原子属性是否是线程安全的?请用一个例子解释一下。

2 个答案:

答案 0 :(得分:1)

/ 一个原子属性是线程安全的。这就是原子性所代表的。

  

<强>注意

但两个原子属性对彼此都不是线程安全的,也不是原子属性线程安全的内容。 (听起来有点令人困惑,但有人说)

这意味着您始终可以保证能够从属性中读取完整功能的值,没有损坏的指针或中间的null或任何内容。

但是你不能保证该原子属性中的值是线程安全的。这是一个完全不同的话题。

  

使类的所有属性都不会使类本身成为线程安全的。

答案 1 :(得分:0)

属性访问器是线程安全的。基本上原子属性相当于:

- (id)atomicProperty {
    @synchronized(self) {
        return _atomicProperty;
    }
}

- (void)setAtomicProperty:(id)atomicProperty {
    @synchronized(self) {
        _atomicProperty = atomicProperty;
    }
}