gpt4 book ai didi

c++ - 一元增量运算符的原子行为

转载 作者:可可西里 更新时间:2023-11-01 16:54:43 25 4
gpt4 key购买 nike

我在某处读到一元运算符本质上是原子的,因此它们可以在多线程环境中按原样使用。为了确认这一点,我在

中编写了两个单独的程序
  1. 我使用了变量 x 并使用一元运算符++x 递增
  2. 我使用了一个变量 x 并使用 x=x+1 递增

我比较了两个程序的反汇编,没有发现区别。请提供您对此的意见。

最佳答案

Somewhere I read that unary operators are atomic by nature and so they can be used as it is in multi threaded environment.

那个来源是完全错误的。您需要使用 std::atomic(或 C 等价物)来实现原子性——一元运算并不特殊。


I compared the disassembly of both programs and found no difference

这并不意味着生成的操作是原子的。没有区别,因为任何体面的编译器都会将 x=x+1++x 优化到同一个程序集中(假设内置类型)。

关于c++ - 一元增量运算符的原子行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53832063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com