C++ 库 - <Atomics>


介绍

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

Atomics型

先生。 会员类型及定义
1 Atomics

Atomics类模板以及 bool、整型和指针类型的特化

C 风格Atomics类型

以下是Atomics类型,也在该标头中定义。

包含型 Atomics型 描述
bool Atomics布尔值
char Atomics字符

基本整数类型的Atomics。

这些是相应的完全专业化的类型定义Atomics类模板或此类专业化的基类。

signed char Atomics_schar
unsigned char Atomicsuchar
short Atomics短
unsigned short Atomics_ushort
int Atomics整型
unsigned int Atomicsuint
long Atomics长
unsigned long Atomics_ulong
long long Atomics长
unsigned long long Atomics乌龙
wchar_t Atomics_wchar_t
char16_t Atomics字符16_t
char32_t Atomics字符32_t
整数最大_t Atomicsintmax_t

基于宽度的积分的Atomics(那些定义在<cinttypes>)。

其中每一个都是上述基本整型Atomics之一的别名,或者是该类型的完全特化Atomics具有扩展整数类型的类模板。

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

uintmax_t Atomicsuintmax_t
int_least_t atomic_int_least_t
uint_least_t atomic_uint_least_t
int_fast_t atomic_int_fast_t
uint_fast_t atomic_uint_fast_t
intptr_t Atomicsintptr_t
uintptr_t Atomics_uintptr_t
尺寸_t Atomics大小t
ptrdiff_t Atomicsptrdiff_t

Atomics类型的操作

&
先生。 操作与定义
1 Atomics无锁

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

2 Atomics存储和Atomics存储显式

它自动用非Atomics参数替换Atomics对象的值

3 Atomics负载和Atomics负载显式

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

4 Atomics交换和Atomics交换显式

它以Atomics方式用非Atomics参数替换Atomics对象的值,并返回Atomics对象的旧值

5 atomic_compare_exchange_weak&atomic_compare_exchange_weak_explicit&atomic_compare_exchange_strong&atomic_compare_exchange_strong_explicit

它以Atomics方式将Atomics对象的值与非Atomics参数进行比较,如果相等则执行Atomics交换,如果不相等则执行Atomics加载

6 atomic_fetch_add 和atomic_fetch_add_explicit

它将非Atomics值添加到Atomics对象并获取Atomics对象的先前值

7 atomic_fetch_sub 和atomic_fetch_sub_explicit

它从Atomics对象中减去非Atomics值并获得该Atomics的先前值

8 atomic_fetch_and 和atomic_fetch_and_explicit

它将Atomics对象替换为与非Atomics参数进行逻辑与的结果,并获取Atomics对象的先前值

9 atomic_fetch_or 和atomic_fetch_or_explicit

它将Atomics对象替换为与非Atomics参数进行逻辑或的结果,并获取Atomics对象的先前值

10 atomic_fetch_xor 和atomic_fetch_xor_explicit

它将Atomics对象替换为与非Atomics参数进行逻辑异或的结果,并获得Atomics对象的先前值

标志类型和操作

先生。 标志类型及定义
1 Atomics标志

无锁布尔Atomics类型

2 atomic_flag_test_and_set 和atomic_flag_test_and_set_explicit

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

3 atomic_flag_clear 和atomic_flag_clear_explicit

它自动将标志的值设置为 false