命名空间
变体
操作

ATOMIC_VAR_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 中已弃用)
ATOMIC_VAR_INIT
(C++11)(C++20 中已弃用)
内存顺序
原子操作的自由函数
原子标志的自由函数
 
定义在头文件中 <atomic>
#define ATOMIC_VAR_INIT(value) /* 实现定义 */
(自 C++11 起)
(C++20 中已弃用)

扩展为一个表达式,可用于初始化一个 std::atomic 对象,该对象可以从 value 初始化。如果原子对象具有静态存储持续时间,则此初始化为 常量初始化

[编辑] 备注

在初始化期间从另一个线程访问变量,即使通过原子操作,也是数据竞争(如果地址立即通过 std::memory_order_relaxed 操作传递给另一个线程,则可能会发生这种情况)

此宏主要为了与 C 保持兼容;它的行为与 std::atomic 的构造函数相同。

[编辑] 示例

#include <atomic>
#include <iostream>
 
int main()
{
    std::atomic<int> a = ATOMIC_VAR_INIT(1);
    // std::atomic<int> a(1);   // C++-only alternative
    std::cout << "Initialized std::atomic<int> as: " << a << '\n';
}

输出

Initialized std::atomic<int> as: 1

[编辑] 另请参阅

(C++11)(C++20 中已弃用)
原子对象的默认构造初始化
(函数模板) [编辑]
构造一个原子对象
(std::atomic<T> 的公共成员函数) [编辑]
C 文档 for ATOMIC_VAR_INIT