目录

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

↑回到顶部↑
WIKI教程 @2018