[英]Why 'acquire/release' can not guarantee sequential consistency in c++11?
[英]Does C++11 std::atomic guarantee mutual exclusion as well as sequential consistency?
我相信答案是肯定的,就像Java中一样。
如果我错了,请纠正我。
如果只需要使用互斥,则可以使用std::mutex
等。
如果我只需要顺序一致性而不是互斥,该怎么办? 有什么用呢?
是的-请参阅带有memory_order_seq_cst
std::atomic
以了解顺序一致性。
在std::atomic<whatever>
类型的对象上执行的单个操作是原子的,但就其作用而已。 所以std::atomic<int>::fetch_add()
是原子的。 但
std::atomic<int> x;
...
int tmp = x.load();
tmp += 1;
x.store(tmp);
只是顺序一致,不是原子的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.