命名空间
变体
操作

ATOMIC_FLAG_INIT

来自 cppreference.cn
< 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)
期值
(C++11)
(C++11)
(C++11)
(C++11)
安全回收
(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 /* implementation-defined */
(C++11 起)

定义了可用于以 `std::atomic_flag v = ATOMIC_FLAG_INIT;` 的形式将 std::atomic_flag 初始化为清除(false)状态的初始化器。是否可以将其用于其他初始化上下文是未指定的。

如果该标志是一个具有静态存储期完整对象,则此初始化是静态的

这是将 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++ 标准。

缺陷报告 应用于 发布时的行为 正确的行为
LWG 2159 C++11 不清楚 `ATOMIC_FLAG_INIT`
是否可用于其他初始化上下文
其他用法
不保证
LWG 3659 C++20 `ATOMIC_FLAG_INIT` 已被弃用,但在某些平台上的 C 中需要 它已取消弃用

[编辑] 另请参阅

无锁布尔原子类型
(类) [编辑]
C 文档ATOMIC_FLAG_INIT