C++原子递增内存顺序

3
在C++11中: 如果我对原子变量进行自增(使用std::atomic上的operator ++),新值是否带有内存屏障存储?还是我必须显式执行存储操作?
1个回答

10

您不需要进行显式存储。将使用序列一致性内存排序。

atomic<integral>类型上的operator++(int)operator++()被指定为具有fetch_add(1)的效果,这最终会调用带有默认内存排序memory_order_seq_cst的成员函数。

请查看规范中的关于原子类型操作的要求 [atomics.types.operations.req] 29.6.5/33。


好的,我明白了...我忘记了fetch_add的memory_order_seq_cst默认值..谢谢。 - excalibur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接