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

时间:2013-09-06 01:44:46

标签: c++ multithreading c++11

我相信答案是肯定的,就像在Java中一样。

如果我错了,请纠正我。

如果我需要使用互斥,我可以使用std::mutex和其他人。

如果我只需要顺序一致性而不是相互排斥怎么办?什么可以用于此?

2 个答案:

答案 0 :(得分:1)

是的 - 请std::atomicmemory_order_seq_cst一致,了解顺序一致性。

答案 1 :(得分:0)

std::atomic<whatever>类型的对象执行的各个操作是原子的,但就其而言。所以std::atomic<int>::fetch_add()是原子的。但

std::atomic<int> x;
...
int tmp = x.load();
tmp += 1;
x.store(tmp);

只是顺序一致,而不是原子。