在C++11中:
如果我对原子变量进行自增(使用std::atomic上的operator ++),新值是否带有内存屏障存储?还是我必须显式执行存储操作?
您不需要进行显式存储。将使用序列一致性内存排序。
atomic<
integral
>
类型上的operator++(int)
和operator++()
被指定为具有fetch_add(1)
的效果,这最终会调用带有默认内存排序memory_order_seq_cst
的成员函数。
请查看规范中的关于原子类型操作的要求 [atomics.types.operations.req] 29.6.5/33。