This question already has answers here:
Can a bool read/write operation be not atomic on x86? [duplicate]

(3个答案)



Do I have to use atomic<bool> for “exit” bool variable?

(3个答案)


7年前关闭。



atomic<bool>是不是多余的,因为bool本质上是原子的?我认为不可能有部分修改的bool值。我何时真正需要使用atomic<bool>而不是bool

最佳答案

除非它是std::atomic* -something,否则C++中的任何类型都不是“原子的”。那是因为该标准是这样说的。

在实践中,发出的用于操作std::atomic<bool>的实际硬件指令可能与(或可能不)与普通bool的硬件指令相同,但是原子性是一个更大的概念,具有更广泛的影响(例如,对编译器重新排序的限制)。此外,原子操作上的某些操作(如求反)会重载,从而在硬件上创建与非原子变量的 native ,非原子读-修改-写序列不同的指令。

10-08 08:12
查看更多