Namespaces
Variants

atomic_store, atomic_store_explicit

From cppreference.net
定義先ヘッダ <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 のいずれかでなければなりません。それ以外の場合、動作は未定義です。

これはすべての generic function に対して定義された atomic object types A です。引数はvolatile atomic型へのポインタであり、非volatileと volatile (メモリマップドI/Oなど)の両方のatomicオブジェクトのアドレスを受け入れます。また、volatile atomicオブジェクトにこの操作を適用する際にはvolatileセマンティクスが保持されます。 C A に対応する非atomic型です。

ジェネリック関数の名前がマクロであるか、外部リンケージで宣言された識別子であるかは未規定です。実際の関数にアクセスするために(例えば括弧で囲んで ( atomic_store ) ( ... ) のように)マクロ定義が抑制された場合、またはプログラムがジェネリック関数の名前で外部識別子を定義した場合、動作は未定義です。

目次

パラメータ

obj - 変更対象のアトミックオブジェクトへのポインタ
order - この操作におけるメモリ同期順序

戻り値

(なし)

参考文献

  • C17規格 (ISO/IEC 9899:2018):
  • 7.17.7.1 atomic_store ジェネリック関数 (p: 206)
  • C11規格 (ISO/IEC 9899:2011):
  • 7.17.7.1 atomic_store ジェネリック関数 (p: 282)

関連項目

アトミックオブジェクトから値を読み取る
(関数)
C++ documentation for atomic_store , atomic_store_explicit