原子操作
C++11对数据进行了更为良好的抽象,引入"原子数据类型"/atomic类型,以达到对开发者掩盖互斥锁、临界区的目的。
C++11 对常见的原子操作进行了抽象,定义出统一的接口,并根据编译选项/环境产生平台相关的实现。新标准将原子操作定义为atomic模板类的成员函数,囊括了绝大多数典型的操作——读、写、比较、交换等。
std::atomic_flag
std::atomic_flag是一个原子的布尔类型,可支持两种原子操作:
test_and_set
:将atomic_falg的值设置成true,并返回之前状态的值。
clear
清除atomic_flag数据
初始化方式
std::atomic_flag lock = ATOMIC_FLAG_INIT;