简介
这些类型封装了一个值,该值的访问权限可以保证不会导致数据争用,并且可以用于同步不同线程之间的内存访问,并且原子库提供了很好的组件 - 粒度原子操作,允许无锁并发编程.对于涉及同一对象的任何其他原子操作,每个原子操作都是不可分割的.
原子类型
Sr.No. | 会员类型&定义 |
---|---|
1 | atomic bool,积分和指针类型的原子类模板和特化 |
C -style atomic types
以下是原子类型,也在此标题中定义.
包含类型 | atomic type | description |
---|---|---|
bool | ||
char | 积分类型的14"> 原子. 这些是类的相应完全特化的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&定义 |
---|---|
1 | atomic_is_lock_free 它用于检查原子类型的操作是否无锁 |
2 | atomic_store& ; atomic_store_explicit 它使用非原子参数自动替换原子对象的值 |
3 | atomic_load& atomic_load_explicit 它以原子方式获取存储在原子对象中的值 |
4 | atomic_exchange& atomic_exchange_explicit 它原子地用非原子参数替换原子对象的值,并返回原子的旧值 |
5 | atomic_compare_exchange_weak& atomic_compare_exchange_weak_explicit& atomic_compare_exchange_strong& atomic_compare_exchange_strong_explicit 它原子地将原子对象的值与非原子参数进行比较,如果相等或原子载荷则执行原子交换 |
6 | atomic_fetch_add& atomic_fetch_add_explicit 它向原子对象添加非原子值并获得原子的先前值 |
7 | atomic_fetch_sub& atomic_fetch_sub_explicit 它从原子对象中减去非原子值并获得原子的先前值 |
8 | atomic_fetch_and& atomic_fetch_and_explicit 它用非原子参数替换逻辑AND结果的原子对象,并获得原子的先前值 |
9 | atomic_fetch_or& amp; atomic_fetch_or_explicit 它用非原子参数替换逻辑OR结果的原子对象,并获得原子的先前值 |
10 | atomic_fetch_xor& atomic_fetch_xor_explicit 它用非原子参数替换逻辑XOR结果的原子对象,并获得原子的先前值 |
标志类型和操作
Sr.No. | 标记类型&定义 |
---|---|
1 | atomic_flag 无锁布尔原子类型 |
2 | atomic_flag_test_and_set& atomic_flag_test_and_set_explicit 它以原子方式将标志设置为true并返回其先前的值 |
3 | atomic_flag_clear& atomic_flag_clear_explicit 它以原子方式将标志的值设置为false |