atomic_store, atomic_store_explicit
From cppreference.com
| ヘッダ <stdatomic.h>で定義 |
||
| void atomic_store( volatile A* obj , C desired ); |
(1) | (C11 以降) |
| void atomic_store_explicit( volatile A* obj, C desired, memory_order order ); |
(2) | (C11 以降) |
obj が指すアトミック変数の値を desired にアトミックに置き換えます。この操作はアトミックな書き込み操作です。
最初のバージョンは、メモリへのアクセスを memory_order_seq_cst に従って順序付けします。2 番目のバージョンは、メモリへのアクセスを order に従って順序付けします。order は、memory_order_relaxed、memory_order_release、または memory_order_seq_cst のいずれかでなければなりません。それ以外の場合は、動作は未定義です。
これは、すべてのアトミックオブジェクト型Aに対して定義された汎用関数です。引数は、非volatileなアトミックオブジェクトとvolatile(例: メモリマップドI/O)なアトミックオブジェクトの両方のメモリアドレスを受け入れるために、volatileアトミック型へのポインタです。volatileアトミックオブジェクトにこの操作を適用する場合、volatileセマンティクスが保持されます。CはAに対応する非アトミック型です。
ジェネリック関数の名前がマクロであるか、外部リンケージで宣言された識別子であるかは未指定です。実際の関数にアクセスするためにマクロ定義が無効にされている場合(例:(atomic_store)(...) のように括弧で囲む)、またはプログラムがジェネリック関数と同じ名前の外部識別子を定義している場合、動作は未定義です。
目次 |
[編集] パラメータ
| obj | - | 操作対象のアトミックオブジェクトへのポインタ |
| order | - | この操作のメモリ同期順序 |
[編集] 戻り値
(なし)
[編集] 参考文献
- C17標準 (ISO/IEC 9899:2018)
- 7.17.7.1 The atomic_store generic functions (p: 206)
- C11標準 (ISO/IEC 9899:2011)
- 7.17.7.1 The atomic_store generic functions (p: 282)
[編集] 関連項目
| アトミックオブジェクトから値を読み込む (関数) | |
| C++ ドキュメント ( atomic_store, atomic_store_explicit )
| |