atomic_load, atomic_load_explicit
|
ヘッダーで定義
<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
のいずれかでなければなりません。それ以外の場合、動作は未定義です。
これはすべての
generic function
に対して定義された
atomic object types
A
です。引数はvolatile atomic型へのポインタであり、非volatileと
volatile
(例:メモリマップトI/O)の両方のatomicオブジェクトのアドレスを受け入れます。また、volatile atomicオブジェクトにこの操作を適用する際にはvolatileセマンティクスが保持されます。
C
は
A
に対応する非atomic型です。
ジェネリック関数の名前がマクロであるか、外部リンケージで宣言された識別子であるかは未規定です。実際の関数にアクセスするために(例えば括弧で囲んで ( atomic_load ) ( ... ) のように)マクロ定義を抑制した場合、またはプログラムがジェネリック関数の名前で外部識別子を定義した場合、動作は未定義です。
目次 |
パラメータ
| obj | - | アクセスするアトミックオブジェクトへのポインタ |
| order | - | この操作のためのメモリ同期順序 |
戻り値
obj
が指すアトミック変数の現在値。
参考文献
- C17規格 (ISO/IEC 9899:2018):
-
- 7.17.7.2 atomic_load ジェネリック関数 (p: 206)
- C11規格 (ISO/IEC 9899:2011):
-
- 7.17.7.2 atomic_load ジェネリック関数 (p: 282)
関連項目
|
アトミックオブジェクトに値を格納する
(関数) |
|
|
C++ドキュメント
for
atomic_load
,
atomic_load_explicit
|
|