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