原子变量c ++

sno*_*ain 1 c++ multithreading

我已将其初始化为

count = 15;
Run Code Online (Sandbox Code Playgroud)

如果我有两个这样的线程:

thread_1(){
    count = 0;
    x = count;
    count = x;
}
Run Code Online (Sandbox Code Playgroud)

thread_2(){
    y = count;
    count = y;
    count = 0;
}
Run Code Online (Sandbox Code Playgroud)

在没有计数同步的情况下,在运行两个线程之后,count可以最终为15.

如果我将我的count变量声明为原子,那么在运行两个线程后,count会一直是0吗?

ens*_*nsc 5

没有; 程序可以像执行一样执行

  1. count = 15 (全局初始化)
  2. y = count (线程2)
  3. count = 0 (线程1)
  4. count = y (thread2 - > 15)
  5. x = count (线程1)
  6. count = 0 (线程2)
  7. count = x (thread1 - > 15)