C++ Library - <atomic>
介绍 (Introduction)
这些类型封装了一个值,该值的访问保证不会导致数据争用,并且可以用于同步不同线程之间的内存访问,并且原子库提供了用于细粒度原子操作的组件,允许无锁并发编程。 对于涉及同一对象的任何其他原子操作,每个原子操作都是不可分割的。
原子类型
Sr.No. | 会员类型和定义 |
---|---|
1 | atomic 原子类模板和bool,积分和指针类型的特化 |
C风格的原子类型
以下是原子类型,也在此标头中定义。
包含类型 | 原子类型 | 描述 |
---|---|---|
bool | atomic_bool | |
char | atomic_char | fundamental integral types原子。 这些是原子类模板的相应完全特化的typedef或这种特化的基类。 |
signed char | atomic_schar | |
unsigned char | atomic_uchar | |
short | atomic_short | |
unsigned short | atomic_ushort | |
int | atomic_int | |
unsigned int | atomic_uint | |
long | atomic_long | |
unsigned long | atomic_ulong | |
long long | atomic_llong | |
unsigned long long | atomic_ullong | |
wchar_t | atomic_wchar_t | |
char16_t | atomic_char16_t | |
char32_t | atomic_char32_t | |
intmax_t | atomic_intmax_t | width-based integrals原子(在“cinttypes”中定义的那些)。 这些中的每一个都是上述atomics for fundamental integral types的原子之一的别名,或者是具有extended integral type的原子类模板的完全特化。 其中N是8,16,32,64中的一个,或者库支持的任何其他类型宽度。 |
uintmax_t | atomic_uintmax_t | |
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 | |
intptr_t | atomic_intptr_t | |
uintptr_t | atomic_uintptr_t | |
size_t | atomic_size_t | |
ptrdiff_t | atomic_ptrdiff_t |
对原子类型的操作
&Sr.No. | 操作和定义 |
---|---|
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&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 |