ATOMIC_VAR_INIT
From cppreference.net
C++
Concurrency support library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ヘッダーで定義
<atomic>
|
||
|
#define ATOMIC_VAR_INIT(value) /* implementation-defined */
|
(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)
(deprecated in C++20)
|
デフォルト構築されたアトミックオブジェクトの非アトミック初期化
(関数テンプレート) |
|
アトミックオブジェクトを構築する
(
std::atomic<T>
の公開メンバ関数)
|
|
|
Cドキュメント
for
ATOMIC_VAR_INIT
|
|