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 |