Namespaces
Variants

ATOMIC_FLAG_INIT

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
ATOMIC_FLAG_INIT
(C++11)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
ヘッダーで定義 <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ドキュメント for ATOMIC_FLAG_INIT