我在某处读到,一元运算符本质上是原子的,因此它们可以像在多线程环境中一样使用。为了确认这一点,我编写了两个单独的程序,其中
我比较了两个程序的反汇编,发现没有区别。请提供您对此的意见。
最佳答案
该消息来源是完全错误的。您需要使用std::atomic
(或C等效项)来实现原子性-一元运算并不特殊。
这并不意味着生成的操作是原子的。这没有什么区别,因为任何体面的编译器都会将x=x+1
和++x
优化到同一程序集中(假定内置类型)。
关于c++ - 一元增量算子的原子行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53832063/