命名空间
变体
操作

ATOMIC_FLAG_INIT

来自 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)
期货
(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)
内存排序
原子操作的自由函数
原子标志的自由函数
 
定义在头文件 <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 文档 for ATOMIC_FLAG_INIT