atomic_store, atomic_store_explicit
|
定義先ヘッダ
<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
|
|