C ++库 - <atomic>

简介

这些类型封装了一个值,该值的访问权限可以保证不会导致数据争用,并且可以用于同步不同线程之间的内存访问,并且原子库提供了很好的组件 - 粒度原子操作,允许无锁并发编程.对于涉及同一对象的任何其他原子操作,每个原子操作都是不可分割的.

原子类型

Sr.No.会员类型&定义
1atomic

bool,积分和指针类型的原子类模板和特化

C -style atomic types

以下是原子类型,也在此标题中定义.

包含类型atomic typedescription
bool
char

原子.

这些是类的相应完全特化的typedef模板或此类专业化的基类.

signed char
unsigned char
short
unsigned short
int
unsigned int
long
unsigned long
long long
unsigned long long
wchar_t
char16_t
char32_t

基于宽度的积分的原子().

这些中的每一个都是上述基本整数类型的原子之一的别名或完整的具有扩展积分类型的类模板的特化.

其中 N 是8,16,32,64或库支持的任何其他类型宽度中的一个.

int_least N _t atomic_int_least N _t
uint_least N _t atomic_uint_least N _t
int_fast N _t atomic_int_fast N _t
uint_fast N _t atomic_uint_fast N _t








原子类型的操作

&

Sr.No.Operations&定义
1atomic_is_lock_free

它用于检查原子类型的操作是否无锁

2atomic_store& ; atomic_store_explicit

它使用非原子参数自动替换原子对象的值

3atomic_load& atomic_load_explicit

它以原子方式获取存储在原子对象中的值

4atomic_exchange& atomic_exchange_explicit

它原子地用非原子参数替换原子对象的值,并返回原子的旧值

5atomic_compare_exchange_weak& atomic_compare_exchange_weak_explicit& atomic_compare_exchange_strong& atomic_compare_exchange_strong_explicit

它原子地将原子对象的值与非原子参数进行比较,如果相等或原子载荷则执行原子交换

6atomic_fetch_add& atomic_fetch_add_explicit

它向原子对象添加非原子值并获得原子的先前值

7atomic_fetch_sub& atomic_fetch_sub_explicit

它从原子对象中减去非原子值并获得原子的先前值

8atomic_fetch_and& atomic_fetch_and_explicit

它用非原子参数替换逻辑AND结果的原子对象,并获得原子的先前值

9atomic_fetch_or& amp; atomic_fetch_or_explicit

它用非原子参数替换逻辑OR结果的原子对象,并获得原子的先前值

10atomic_fetch_xor& atomic_fetch_xor_explicit

它用非原子参数替换逻辑XOR结果的原子对象,并获得原子的先前值

标志类型和操作

Sr.No.标记类型&定义
1atomic_flag

无锁布尔原子类型

2atomic_flag_test_and_set& atomic_flag_test_and_set_explicit

它以原子方式将标志设置为true并返回其先前的值

3atomic_flag_clear& atomic_flag_clear_explicit

它以原子方式将标志的值设置为false