字节操作在C++ 11中是原子的吗?

Bal*_*cis 3 multithreading atomic c++11

那么char上的操作是原子的吗?所以在线程AI中读取char T并在线程BI中写入相同的char T,这些标准操作是原子的吗?

char a;

#thread A
{ 
if(a & 0x01)
  ...

}

#thread B
{ 
 a =0x01;
  ...

}

# ATOMIC?
Run Code Online (Sandbox Code Playgroud)

谢谢!

Ben*_*igt 9

根据C++标准,当从多个线程使用相同的变量时,可能发生并发访问,如果至少有一个访问是写入,则这些访问会发生冲突.

冲突的潜在并发访问构成数据争用,这是未定义的行为,除非所有这些访问都是原子的. volatile不会拯救你.

原始类型在C++标准中使用的含义内不是原子.您可以使用该std::atomic模板制作原子对象.