atomic_init
From cppreference.com
| ヘッダ <stdatomic.h>で定義 |
||
| void atomic_init( volatile A* obj, C desired ); |
(C11 以降) | |
デフォルトコンストラクタによって構築されたアトミックオブジェクトobjを値desiredで初期化します。この関数はアトミックではありません。別のスレッドからの同時アクセス(アトミック操作によるものを含む)はデータ競合となります。
これは、すべてのアトミックオブジェクト型Aに対して定義された汎用関数です。引数は、非volatileなアトミックオブジェクトとvolatile(例: メモリマップドI/O)なアトミックオブジェクトの両方のメモリアドレスを受け入れるために、volatileアトミック型へのポインタです。volatileアトミックオブジェクトにこの操作を適用する場合、volatileセマンティクスが保持されます。CはAに対応する非アトミック型です。
ジェネリック関数の名前がマクロであるか、外部リンケージで宣言された識別子であるかは未規定です。実際の関数にアクセスするためにマクロ定義が無効にされた場合(例:(atomic_init)(...)のように括弧で囲む)、またはプログラムがジェネリック関数と同じ名前の外部識別子を定義した場合、その動作は未定義です。
目次 |
[編集] Parameters
| obj | - | 初期化するアトミックオブジェクトへのポインタ |
| desired | - | アトミックオブジェクトを初期化する値 |
[編集] Return value
(なし)
[編集] Notes
atomic_initは、動的に割り当てられたアトミックオブジェクトを初期化する唯一の方法です。例:
_Atomic int *p = malloc(sizeof(_Atomic int)); atomic_init(p, 42);
[編集] References
- C23標準 (ISO/IEC 9899:2024)
- 7.17.2.2 The atomic_init generic function (p: TBD)
- C17標準 (ISO/IEC 9899:2018)
- 7.17.2.2 The atomic_init generic function (p: 201)
- C11標準 (ISO/IEC 9899:2011)
- 7.17.2.2 The atomic_init generic function (p: 274-275)
[編集] See also
| (C11)(C17で非推奨)(C23で削除) |
新しいアトミックオブジェクトを初期化する (関数マクロ) |
| C++ドキュメント for atomic_init
| |