繁体   English   中英

C ++ 11 std :: atomic是否保证互斥以及顺序一致性?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM