我看到这可能有问题我必须明确调用原子加载/存储吗?.
因此,为了清楚起见,我将简洁地重申我的问题,希望未来的读者能明白这一点。
是
std::atomic<bool> b(false);
bool x = b;
如同
std::atomic<bool> b(false);
bool x = b.load();
和
std::atomic<bool> b(false);
b = true;
如同
std::atomic<bool> b(false);
b.store(true);
如果确实如此,那么:
- 为什么有2个选项?有什么明显的好处?
- 在处理原子时,最好使用更详细的 load()/store() 而不是可能令人困惑的 assignment(=),这可能意味着取决于 LHS 还是 RHS 是原子的。
注意我已经知道这两个变量不能是 std::atomic 即 LHS 和 RHS,因为不可能在一条指令中原子地读写。