名前空間
変種
操作

ATOMIC_VAR_INIT

From cppreference.com
< cpp‎ | atomic
 
 
並行性サポートライブラリ
スレッド
(C++11)
(C++20)
this_thread 名前空間
(C++11)
(C++11)
(C++11)
協調的なキャンセル
排他制御
(C++11)
汎用ロック管理
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
条件変数
(C++11)
セマフォ
ラッチとバリア
(C++20)
(C++20)
future
(C++11)
(C++11)
(C++11)
(C++11)
安全なメモリ解放 (Safe Reclamation)
(C++26)
ハザードポインタ
アトミック型
(C++11)
(C++20)
アトミック型の初期化
(C++11)(C++20で非推奨)
ATOMIC_VAR_INIT
(C++11)(C++20で非推奨)
メモリオーダー
(C++11)(C++26で非推奨)
アトミック操作のためのフリー関数
アトミックフラグのためのフリー関数
 
ヘッダー <atomic> で定義
#define ATOMIC_VAR_INIT(value) /* 実装定義 */
(C++11以降)
(C++20で非推奨)

value から初期化可能な std::atomic オブジェクトを初期化するために使用できる式に展開されます。アトミックオブジェクトが静的記憶域期間を持つ場合、この初期化は 定数初期化 です。

[編集] 注記

初期化中に、アトミック操作を介しても、別のスレッドから変数をアクセスすることはデータ競合となります(アドレスがすぐに std::memory_order_relaxed 操作で別のスレッドに渡された場合に発生する可能性があります)。

このマクロは主に C との互換性のために提供されています。std::atomic のコンストラクタと同じように動作します。

[編集]

#include <atomic>
#include <iostream>
 
int main()
{
    std::atomic<int> a = ATOMIC_VAR_INIT(1);
    // std::atomic<int> a(1);   // C++-only alternative
    std::cout << "Initialized std::atomic<int> as: " << a << '\n';
}

出力

Initialized std::atomic<int> as: 1

[編集] 関連項目

(C++11)(C++20で非推奨)
デフォルトコンストラクトされたアトミックオブジェクトの非アトミックな初期化
(関数テンプレート) [編集]
アトミックオブジェクトを構築する
(std::atomic<T> の公開メンバ関数) [編集]
C のドキュメントATOMIC_VAR_INIT の場合)
English 日本語 中文(简体) 中文(繁體)