命名空间
变体
操作

ATOMIC_VAR_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)
Hazard 指针
原子类型
(C++11)
(C++20)
原子类型的初始化
(C++11)(C++20 中已弃用)
ATOMIC_VAR_INIT
(C++11)(C++20 中已弃用)
内存顺序
(C++11)(C++26 中已弃用)
原子操作的自由函数
原子标志的自由函数
 
定义于头文件 <atomic>
#define ATOMIC_VAR_INIT(value) /* implementation-defined */
(since C++11)
(C++20 中已弃用)

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

[编辑] 注释

在从另一个线程初始化变量期间访问该变量,即使是通过原子操作,也是数据竞争(如果地址通过 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 文档 关于 ATOMIC_VAR_INIT