ATOMIC_VAR_INIT
提供: cppreference.com
<tbody>
</tbody>
| ヘッダ <atomic> で定義
|
||
#define ATOMIC_VAR_INIT(value) /* implementation-defined */ |
||
value から初期化できる std::atomic オブジェクトを初期化するために使用できる式に展開されます。 アトミックオブジェクトが静的記憶域期間を持つ場合、この初期化は定数初期化になります。
ノート
別のスレッドから初期化中の変数にアクセスすると、それがアトミック操作であっても、データ競合になります (std::memory_order_relaxed な操作を使用してそのアドレスが別のスレッドに直接渡されると、これが発生する可能性があります)。
このマクロは主に C との互換性のために提供されます。 std::atomic のコンストラクタと同じ動作をします。
例
Run this code
#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>のパブリックメンバ関数)
|