原子变量
原子变量(atomic variable)是 C++11 引入的一种同步机制,用于在多线程环境中进行无锁的、线程安全的操作。原子变量的操作是不可分割的,即在执行过程中不会被其他线程中断,从而避免了数据竞争和不一致的问题。原子变量位于 头文件中。
基本概念
原子性
原子性:一个操作是原子的,意味着它在执行过程中不会被其他线程中断。原子操作要么完全执行,要么完全不执行,不存在部分执行的状态。
数据竞争
数据竞争:当多个线程同时访问同一个内存位置,并且至少有一个线程在写入数据时,就会发生数据竞争。数据竞争可能导致未定义行为和数据不一致。
原子变量的类型
C++ 标准库提供了多种原子类型,包括:
std::atomic:模板类,可以用于任何可复制的类型 T。
特化类型:如 std::atomic_bool、std::atomic_int、std::atomic_uint 等。
基本用法
定义原子变量:
#include <atomic>
std::atomic<int> atomic_int;
std::atomic_bool atomic_bool;
原子操作
原子变量支持多种原子操作,包括:
加载(load):读取原子变量的值。
存储(store):写入原子变量的值。
交换(exchange):将原子变量的值替换为新值,并返回旧值。
比较交换(compare-exchange):如果原子变量的值等于预期值,则将其替换为新值,并返回操作是否成功。

最低0.47元/天 解锁文章
1405

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



