C++库 - <atomic>



介绍

原子类型对象包含特定类型 (T) 的值,原子对象的特性是,不同线程对该值的访问不会导致数据竞争(即,这样做是明确定义的行为,访问被正确排序)。通常,对于所有其他对象,并发访问同一对象而可能导致数据竞争的操作都被视为未定义行为。

声明

以下是 std::atomic 的声明。

template <class T> struct atomic;

参数

T − 包含值的类型。

成员函数

序号 成员函数和定义
1 (构造函数)

构造一个原子对象

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--

将原子值减一

atomic.htm
广告