Cpp Standard Library 简明教程

C++ Library - <atomic>

Introduction

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

Atomic type

Sr.No.

Member types & Definition

1

atomic bool、整数和指针类型的原子类模板和具体化

C-style atomic types

以下原类型也在此标题中定义。

contained type

atomic type

description

bool

atomic_bool

char

atomic_char

基本整数类型的原子。这些是原子类模板的对应完全具体化的类型定义或此类具体化的基类。

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

基于宽度的整数的原子(在 <cinttypes> 中定义)。每个要么是以上基本整数类型的原子的别名,要么是具有扩展整数类型的原子类模板的完全具体化的别名。其中 N 是 8、16、32、64 或库支持的任何其他类型宽度之一。

uintmax_t

atomic_uintmax_t

int_leastN_t

atomic_int_leastN_t

uint_leastN_t

atomic_uint_leastN_t

int_fastN_t

atomic_int_fastN_t

uint_fastN_t

atomic_uint_fastN_t

intptr_t

atomic_intptr_t

uintptr_t

atomic_uintptr_t

size_t

atomic_size_t

Operations on atomic types

Sr.No.

Operations & Definition

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 的结果替换原子对象并获取原子的前一个值

Flag type and operations

Sr.No.

Flag type & Definition

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