ATOMIC_FLAG_INIT
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ヘッダーで定義
<atomic>
|
||
|
#define ATOMIC_FLAG_INIT /* implementation-defined */
|
(C++11以降) | |
std::atomic_flag をクリア(false)状態で初期化するために使用できる初期化子を定義します。形式は std:: atomic_flag v = ATOMIC_FLAG_INIT ; です。他の初期化コンテキストで使用できるかどうかは未規定です。
フラグが complete object であり、 static storage duration を持つ場合、この initializationはstatic です。
|
std::atomic_flag を明確な値で初期化する唯一の方法です:他の初期化方法で保持される値は未規定です。 |
(until C++20) |
|
このマクロは、 std::atomic_flag のデフォルトコンストラクタがクリア状態で初期化するため、もはや必要ありません。C言語との互換性のために保持されています。 |
(since C++20) |
例
#include <atomic> std::atomic_flag static_flag = ATOMIC_FLAG_INIT; // 静的初期化、 // 静的オブジェクトの動的初期化中に利用可能であることが保証されます int main() { std::atomic_flag automatic_flag = ATOMIC_FLAG_INIT; // 動作が保証されています // std::atomic_flag another_flag(ATOMIC_FLAG_INIT); // 未規定 }
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 2159 | C++11 |
ATOMIC_FLAG_INIT
が他の初期化コンテキストで使用可能か不明確であった |
他の使用方法は
保証されない |
| LWG 3659 | C++20 |
ATOMIC_FLAG_INIT
は非推奨となったが、一部のプラットフォームではC言語で必要
|
非推奨が解除された |
関連項目
|
(C++11)
|
ロックフリーなブーリアンアトミック型
(クラス) |
|
Cドキュメント
for
ATOMIC_FLAG_INIT
|
|