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)
谢谢!
根据C++标准,当从多个线程使用相同的变量时,可能发生并发访问,如果至少有一个访问是写入,则这些访问会发生冲突.
冲突的潜在并发访问构成数据争用,这是未定义的行为,除非所有这些访问都是原子的. volatile不会拯救你.
原始类型在C++标准中使用的含义内不是原子的.您可以使用该std::atomic模板制作原子对象.
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |