C++ 中的异步与无锁编程
1. 原子布尔类型
std::atomic<bool> 是一个功能完备的原子布尔类型,相较于 std::atomic_flag 有更多特性。不过,它既不能进行拷贝构造,也不能进行赋值操作。其对象初始值可以为 true 或 false ,并且可以从非原子的 bool 类型进行构造或赋值:
std::atomic<bool> flg(true);
flg = false;
需要注意的是,原子类型的赋值运算符返回的是非原子类型的值,而非传统的引用。这样做可以避免额外的负载,确保获取的值是实际存储的值。
std::atomic<bool> 支持的操作如下:
- store() :用于写入操作( true 或 false ),是原子存储操作,替代了 std::atomic_flag 的 clear() 函数。
- exchange() :原子的读 - 修改 - 写操作,可将存储的值替换为新值并返回原始值,替代了 test_and_set() 函数。
- load() :用于简单的非修改查询,是
超级会员免费看
订阅专栏 解锁全文

2852

被折叠的 条评论
为什么被折叠?



