名前空間
変種
操作

atomic_init

From cppreference.com
< C‎ | atomic
ヘッダ<stdatomic.h>で定義
void atomic_init( volatile A* obj, C desired );
(C11 以降)

デフォルトコンストラクタによって構築されたアトミックオブジェクトobjを値desiredで初期化します。この関数はアトミックではありません。別のスレッドからの同時アクセス(アトミック操作によるものを含む)はデータ競合となります。

これは、すべてのアトミックオブジェクト型Aに対して定義された汎用関数です。引数は、非volatileなアトミックオブジェクトとvolatile(例: メモリマップドI/O)なアトミックオブジェクトの両方のメモリアドレスを受け入れるために、volatileアトミック型へのポインタです。volatileアトミックオブジェクトにこの操作を適用する場合、volatileセマンティクスが保持されます。CAに対応する非アトミック型です。

ジェネリック関数の名前がマクロであるか、外部リンケージで宣言された識別子であるかは未規定です。実際の関数にアクセスするためにマクロ定義が無効にされた場合(例:(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
English 日本語 中文(简体) 中文(繁體)