3

C ++ 11の場合:アトミック変数(std :: atomicの演算子++)をインクリメントすると、新しい値はメモリバリアとともに保存されますか?または、明示的にストアを実行する必要がありますか?

4

1 に答える 1

9

明示的なストアを行う必要はありません。逐次整合性メモリの順序が使用されます。

operator++(int)およびoperator++()on型は、の効果を持つように指定されます。これにより、デフォルトのメモリ順序でメンバー関数が呼び出されます。atomic<integral>fetch_add(1)memory_order_seq_cst

仕様については、アトミックタイプの操作の要件[atomics.types.operations.req] 29.6.5/33を参照してください。

于 2012-11-20T21:53:29.207 に答える