原子操作库
来自 cppreference.com
< cpp
原子库提供了用于细粒度原子操作的组件,这些操作允许无锁并发编程。对于涉及同一对象的任何其他原子操作,每个原子操作都是不可分割的。原子对象是 没有数据竞争的。
在头文件中定义
<atomic> | ||
原子类型 | ||
(C++11) |
用于 bool、整数、浮点数、(自 C++20 起) 和指针类型的原子类模板及其特化 (类模板) | |
(C++20) |
在非原子对象上提供原子操作 (类模板) | |
原子类型上的操作 | ||
(C++11) |
检查原子类型的操作是否无锁 (函数模板) | |
(C++11)(C++11) |
以原子方式将原子对象的值替换为非原子参数 (函数模板) | |
(C++11)(C++11) |
以原子方式获取存储在原子对象中的值 (函数模板) | |
(C++11)(C++11) |
以原子方式将原子对象的值替换为非原子参数,并返回原子的旧值 (函数模板) | |
以原子方式将原子对象的值与非原子参数进行比较,如果相等则执行原子交换,否则执行原子加载 (函数模板) | ||
(C++11)(C++11) |
将非原子值添加到原子对象,并获取原子的先前值 (函数模板) | |
(C++11)(C++11) |
从原子对象中减去非原子值,并获取原子的先前值 (函数模板) | |
(C++11)(C++11) |
将原子对象替换为与非原子参数进行按位 AND 运算的结果,并获取原子的先前值 (函数模板) | |
(C++11)(C++11) |
将原子对象替换为与非原子参数进行按位 OR 运算的结果,并获取原子的先前值 (函数模板) | |
(C++11)(C++11) |
将原子对象替换为与非原子参数进行按位 XOR 运算的结果,并获取原子的先前值 (函数模板) | |
(C++20)(C++20) |
阻止线程,直到被通知并且原子值发生更改 (函数模板) | |
(C++20) |
通知在 atomic_wait 中被阻塞的线程 (函数模板) | |
(C++20) |
通知在 atomic_wait 中被阻塞的所有线程 (函数模板) | |
标志类型和操作 | ||
(C++11) |
无锁布尔原子类型 (类) | |
以原子方式将标志设置为 true 并返回其先前值 (函数) | ||
(C++11)(C++11) |
以原子方式将标志的值设置为 false (函数) | |
(C++20)(C++20) |
以原子方式返回标志的值 (函数) | |
(C++20)(C++20) |
阻止线程,直到被通知并且标志发生更改 (函数) | |
(C++20) |
通知在 atomic_flag_wait 中被阻塞的线程 (函数) | |
(C++20) |
通知在 atomic_flag_wait 中被阻塞的所有线程 (函数) | |
初始化 | ||
(C++11)(C++20 中已弃用) |
对默认构造的原子对象进行非原子初始化 (函数模板) | |
(C++11)(C++20 中已弃用) |
对具有静态存储期的原子变量进行常量初始化 (函数宏) | |
(C++11) |
将 std::atomic_flag 初始化为 false (宏常量) | |
内存同步排序 | ||
(C++11) |
为给定原子操作定义内存排序约束 (枚举) | |
(C++11) |
从 std::memory_order_consume 依赖树中移除指定对象 (函数模板) | |
(C++11) |
通用的内存顺序依赖型栅栏同步原语 (函数) | |
(C++11) |
线程和在同一线程中执行的信号处理程序之间的栅栏 (函数) |
[编辑] C 兼容性 atomic 类型
定义在头文件
<stdatomic.h> 中 | |
(C++23) |
兼容性宏,使得 _Atomic(T) 等同于 std::atomic<T> (函数宏) |
除了 |
(自 C++23 起) |
[编辑] 另请参阅
C 文档 原子操作库
|