在线文档教程
C++

Atomic operations library

原子操作库

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

在标头中定义<atomic>

*。

原子类型

原子%28C++11%29原子类模板以及bool、整型和指针类型的专门化%28类模板%29

原子类型的操作

原子[医]是[医]锁[医]空闲%28C++11%29检查原子类型%27s操作是否为无锁的%28函数模板%29

原子[医]存储原子[医]商店[医]显式%28C++11%29%28C++11%29原子化用非原子参数%28函数模板%29替换原子对象的值。

原子[医]负载原子[医]负载[医]显式%28C++11%29%28C++11%29原子地获得存储在原子对象%28函数模板%29中的值

原子[医]交换原子[医]交换[医]显式%28C++11%29%28C++11%29原子化地用非原子参数替换原子对象的值,并返回原子%28函数模板%29的旧值。

原子[医]比较[医]交换[医]弱原子[医]比较[医]交换[医]弱[医]说明性[医]比较[医]交换[医]强原子[医]比较[医]交换[医]强[医]显式%28C++11%29%28C+11%29%28C++11%29%28C+11%29原子地比较原子对象的值和非原子参数,如果相等则执行原子交换,如果不等于则执行原子负载。

原子[医]去取[医]附加体[医]去取[医]加[医]显式%28C++11%29%28C++11%29向原子对象添加一个非原子值,并获得原子%28函数模板%29的先前值。

原子[医]去取[医]亚原子[医]去取[医]分[医]显式%28C++11%29%28C++11%29从原子对象中减去一个非原子值,并获得原子%28函数模板%29的先前值。

原子[医]去取[医]无体[医]去取[医]和[医]显式%28C++11%29%28C++11%29用逻辑结果和非原子参数替换原子对象,并获得原子%28函数模板%29的先前值。

原子[医]去取[医]奥原子[医]去取[医]或[医]显式%28C++11%29%28C++11%29用非原子参数替换逻辑OR的结果,并获得原子%28函数模板%29的先前值。

原子[医]去取[医]异原子[医]去取[医]异或[医]显式%28C++11%29%28C++11%29用非原子参数替换逻辑异或结果的原子对象,并获得原子%28函数模板%29的先前值。

标志类型和操作

原子[医]标志%28C++11%29无锁布尔原子类型%28类%29

原子[医]旗子[医]试验[医]和[医]集原子[医]旗子[医]试验[医]和[医]集[医]显式%28C++11%29%28C++11%29原子地将标志设置为true并返回其以前的值%28函数%29

原子[医]旗子[医]清晰原子[医]旗子[医]清澈[医]显式%28C++11%29%28C++11%29原子地将标志的值设置为假%28函数%29

初始化

原子[医]默认构造的原子对象%28函数模板%29的init%28c++11%29非原子初始化

原子[医]瓦尔[医]静态存储时间的原子变量的INIT%28C++11%29常量初始化%28函数宏%29

原子[医]旗子[医]init%28C++11%29初始化std::原子[医]标志为false%28宏常量%29

存储器同步排序

记忆[医]Order%28C++11%29定义给定原子操作的内存排序约束

杀[医]依赖性%28C++11%29从std::内存中删除指定的对象[医]命令[医]使用依赖树%28函数模板%29

原子[医]螺纹[医]Fence%28C++11%29通用内存顺序相关的FRAF同步原语%28功能%29

原子[医]信号[医]在同一线程中执行的线程和信号处理程序之间的Fence%28C++11%29栅栏%28功能%29

另见

C原子操作库文档

*。

© cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

http://en.cppreference.com/w/cpp/Atomic