ATOMIC_VAR_INIT
From cppreference.com
| ヘッダー <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 の場合) | |