Namespaces
Variants

atomic_load, atomic_load_explicit

From cppreference.net
ヘッダーで定義 <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