名前空間
変種
操作

ATOMIC_FLAG_INIT

From cppreference.com
< cpp‎ | atomic
 
 
並行性サポートライブラリ
スレッド
(C++11)
(C++20)
this_thread 名前空間
(C++11)
(C++11)
(C++11)
協調的なキャンセル
排他制御
(C++11)
汎用ロック管理
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
条件変数
(C++11)
セマフォ
ラッチとバリア
(C++20)
(C++20)
future
(C++11)
(C++11)
(C++11)
(C++11)
安全なメモリ解放 (Safe Reclamation)
(C++26)
ハザードポインタ
アトミック型
(C++11)
(C++20)
アトミック型の初期化
(C++11)(C++20で非推奨)
(C++11)(C++20で非推奨)
ATOMIC_FLAG_INIT
(C++11)
メモリオーダー
(C++11)(C++26で非推奨)
アトミック操作のためのフリー関数
アトミックフラグのためのフリー関数
 
ヘッダー <atomic> で定義
#define ATOMIC_FLAG_INIT /* 実装定義 */
(C++11以降)

std::atomic_flag をクリア (false) 状態に初期化するために使用できる初期化子を、std::atomic_flag v = ATOMIC_FLAG_INIT; の形式で定義します。他の初期化コンテキストで使用できるかどうかは未規定です。

フラグが 完全なオブジェクト静的記憶域期間 を持つ場合、この 初期化は静的 です。

std::atomic_flag を確実な値に初期化する唯一の方法です。他のいかなる初期化の後にも保持される値は未規定です。

(C++20まで)

このマクロは、std::atomic_flag のデフォルトコンストラクタがクリア状態に初期化するため、もはや必要ありません。C との互換性のために保持されています。

(C++20以降)

[編集]

#include <atomic>
 
std::atomic_flag static_flag = ATOMIC_FLAG_INIT; // static initialization,
// guaranteed to be available during dynamic initialization of static objects.
 
int main()
{
    std::atomic_flag automatic_flag = ATOMIC_FLAG_INIT; // guaranteed to work
//    std::atomic_flag another_flag(ATOMIC_FLAG_INIT); // unspecified
}

[編集] 不具合報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 2159 C++11 ATOMIC_FLAG_INIT
他の初期化コンテキストで使用できるかどうかは不明でした
他の使用法は
保証されていません
LWG 3659 C++20 ATOMIC_FLAG_INIT は非推奨でしたが、一部のプラットフォームの C では必要でした 非推奨は解除されました

[編集] 関連項目

ロックフリーなブール型アトミック型
(クラス) [編集]
C のドキュメントATOMIC_FLAG_INIT
English 日本語 中文(简体) 中文(繁體)