C++ 库 - <atomic>
简介
它是一个原子类型的对象,包含一个特定类型(T)的值,原子对象的主要特征是从不同线程访问这个包含的值不会导致数据竞争(即,这样做是定义明确的行为,与 访问正确排序)。 通常,对于所有其他对象,导致同时访问同一对象的数据竞争的可能性将操作限定为未定义的行为。
声明
以下是 std::atomic 的声明。
template <class T> struct atomic;
参数
T − 它是包含值的一种类型。
成员函数
序号 | 成员函数 & 定义 |
---|---|
1 |
(constructor)
它是一个构造一个原子对象 |
2 |
operator=
它将值存储到原子对象中 |
3 |
is_lock_free
它检查原子对象是否是无锁的 |
4 |
store
它用非原子参数原子地替换原子对象的值 |
5 |
load
它以原子方式获取原子对象的值 |
6 |
operator T
它从一个原子对象加载一个值 |
7 |
exchange
它以原子方式替换原子对象的值,并获得之前持有的值 |
8 |
compare_exchange_weak & compare_exchange_strong
它以原子方式将原子对象的值与非原子参数进行比较,如果相等则执行原子交换,否则执行原子负载 |
特定专业支持的操作
序号 | 操作 & 定义 |
---|---|
1 |
fetch_add
它以原子方式将参数添加到存储在原子对象中的值中,并获取先前保存的值 |
2 |
fetch_sub
它以原子方式从存储在原子对象中的值中减去参数,并获得先前保存的值 |
3 |
fetch_and
它在参数和原子对象的值之间原子地执行按位与,并获得先前保存的值 |
4 |
fetch_or
它以原子方式在参数和原子对象的值之间执行按位或,并获得先前保存的值 |
5 |
fetch_xor
它以原子方式将原子对象的值与非原子参数进行比较,如果相等则执行原子交换,否则执行原子负载 |
6 |
operator++
它将原子值加一 |
7 |
operator--
它将原子值减一 |