BGR*_*BGR 5 c++ concurrency c++11 stdatomic
我看到这可能有问题我必须明确调用原子加载/存储吗?.
因此,为了清楚起见,我将简洁地重申我的问题,希望未来的读者能够清楚地看到这一点.
是
std::atomic<bool> b(false);
bool x = b;
Run Code Online (Sandbox Code Playgroud)
与...一样
std::atomic<bool> b(false);
bool x = b.load();
Run Code Online (Sandbox Code Playgroud)
和
std::atomic<bool> b(false);
b = true;
Run Code Online (Sandbox Code Playgroud)
与...一样
std::atomic<bool> b(false);
b.store(true);
Run Code Online (Sandbox Code Playgroud)
注意我已经意识到这两个变量都不能是std :: atomic即LHS和RHS,因为它不可能在一条指令中以原子方式读写.
是的,他们是一样的.我认为提供重载运算符的原因是为了方便起见.更不用说将现有代码转换为使用原子更容易了.
就个人而言,我更喜欢明确load而且store始终.我认为这是更好的练习并迫使你记住你正在处理一个原子.
此外,这些函数允许您指定其他内存顺序,这对于重载的运算符版本是不可能的.
| 归档时间: |
|
| 查看次数: |
2839 次 |
| 最近记录: |