Namespaces
Variants

atomic_init

From cppreference.net
定義先ヘッダ <stdatomic.h>
void atomic_init ( volatile A * obj, C desired ) ;
(C11以降)

デフォルト構築されたアトミックオブジェクト obj を値 desired で初期化します。この関数はアトミックではありません:別のスレッドからの同時アクセスは、アトミック操作を介した場合でもデータ競合となります。

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

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

目次

パラメータ

obj - 初期化するアトミックオブジェクトへのポインタ
desired - アトミックオブジェクトの初期化に使用する値

戻り値

(なし)

注記

atomic_init は動的に確保されたアトミックオブジェクトを初期化する唯一の方法です。例:

_Atomic int *p = malloc(sizeof(_Atomic int));
atomic_init(p, 42);

参考文献

  • C23規格 (ISO/IEC 9899:2024):
  • 7.17.2.2 atomic_init ジェネリック関数 (p: TBD)
  • C17規格 (ISO/IEC 9899:2018):
  • 7.17.2.2 atomic_initジェネリック関数 (p: 201)
  • C11規格 (ISO/IEC 9899:2011):
  • 7.17.2.2 atomic_init ジェネリック関数 (p: 274-275)

関連項目

(C11) (C17で非推奨) (C23で削除)
新しいアトミックオブジェクトを初期化する
(関数マクロ)
C++ドキュメント for atomic_init