命名空间
变体
操作

原子操作库

来自 cppreference.com
< cpp
 
 
 

原子库提供了用于细粒度原子操作的组件,这些操作允许无锁并发编程。对于涉及同一对象的任何其他原子操作,每个原子操作都是不可分割的。原子对象是 没有数据竞争的

在头文件中定义 <atomic>

内容

原子类型
(C++11)
用于 bool、整数、浮点数、(自 C++20 起) 和指针类型的原子类模板及其特化
(类模板) [edit]
在非原子对象上提供原子操作
(类模板) [edit]
原子类型上的操作
检查原子类型的操作是否无锁
(函数模板) [edit]
以原子方式将原子对象的值替换为非原子参数
(函数模板) [edit]
以原子方式获取存储在原子对象中的值
(函数模板) [edit]
以原子方式将原子对象的值替换为非原子参数,并返回原子的旧值
(函数模板) [edit]
以原子方式将原子对象的值与非原子参数进行比较,如果相等则执行原子交换,否则执行原子加载
(函数模板) [edit]
将非原子值添加到原子对象,并获取原子的先前值
(函数模板) [edit]
从原子对象中减去非原子值,并获取原子的先前值
(函数模板) [edit]
将原子对象替换为与非原子参数进行按位 AND 运算的结果,并获取原子的先前值
(函数模板) [edit]
将原子对象替换为与非原子参数进行按位 OR 运算的结果,并获取原子的先前值
(函数模板) [edit]
将原子对象替换为与非原子参数进行按位 XOR 运算的结果,并获取原子的先前值
(函数模板) [edit]
阻止线程,直到被通知并且原子值发生更改
(函数模板) [edit]
通知在 atomic_wait 中被阻塞的线程
(函数模板) [edit]
通知在 atomic_wait 中被阻塞的所有线程
(函数模板) [edit]
标志类型和操作
无锁布尔原子类型
(类) [edit]
以原子方式将标志设置为 true 并返回其先前值
(函数) [edit]
以原子方式将标志的值设置为 false
(函数) [edit]
以原子方式返回标志的值
(函数) [edit]
阻止线程,直到被通知并且标志发生更改
(函数) [edit]
通知在 atomic_flag_wait 中被阻塞的线程
(函数) [edit]
通知在 atomic_flag_wait 中被阻塞的所有线程
(函数) [edit]
初始化
(C++11)(C++20 中已弃用)
对默认构造的原子对象进行非原子初始化
(函数模板) [edit]
(C++11)(C++20 中已弃用)
对具有静态存储期的原子变量进行常量初始化
(函数宏) [edit]
std::atomic_flag 初始化为 false
(宏常量) [edit]
内存同步排序
为给定原子操作定义内存排序约束
(枚举) [编辑]
std::memory_order_consume 依赖树中移除指定对象
(函数模板) [编辑]
通用的内存顺序依赖型栅栏同步原语
(函数) [编辑]
线程和在同一线程中执行的信号处理程序之间的栅栏
(函数) [编辑]

[编辑] C 兼容性 atomic 类型

定义在头文件 <stdatomic.h>
(C++23)
兼容性宏,使得 _Atomic(T) 等同于 std::atomic<T>
(函数宏) [编辑]

除了 <stdatomic.h> 之外,任何 C++ 标准库头文件都不提供 _Atomic 宏或任何非宏全局命名空间声明。

(自 C++23 起)

[编辑] 另请参阅

C 文档 原子操作库