关于C#:原子属性是线程安全的吗?

Is an atomic property thread safe?

本问题已经有最佳答案,请猛点这里访问。

关于原子性和非原子性,我已经回答了很多问题。但我无法理解原子属性是否是线程安全的?请举例说明。


是的

一个/一个原子属性是线程安全的。原子性就是这个意思。

CAUTION

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

这意味着始终保证您能够从属性中读取完整的函数值,没有断开的指针,或者中介空值或其他任何值。

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

Making all properties of a class atomic will not at all make the class itself thread-safe.


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

1
2
3
4
5
6
7
8
9
10
11
- (id)atomicProperty {
    @synchronized(self) {
        return _atomicProperty;
    }
}

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