类模板
<atomic>

std::atomic

template <class T> struct atomic;
Atomic
原子对象包含一个特定类型(T)的值。

原子对象的主要特性是,来自不同线程对该包含值的访问不会导致数据竞争(即,这样做是*定义明确的行为*,并且访问被正确排序)。通常,对于所有其他对象,因为访问同一对象而可能导致数据竞争,会将该操作视为*未定义行为*。

此外,atomic 对象还可以通过指定不同的*内存顺序*来同步对其他非原子对象的访问。

模板参数

T
包含值的类型。
这应该是*可平凡复制类型*。

成员函数


通用原子操作


某些特化类型支持的操作(整数和/或指针,见下文)


模板特化

对于所有*基本整数类型*(不包括bool)以及<cstdint>中所需的任何扩展整数类型,atomic 类模板都有完全的特化。这些特化具有以下附加的成员函数:
特化附加成员函数
char
signed char
unsigned char
short
unsigned short
int
unsigned int
long
unsigned long
long long
unsigned long long
char16_t
char32_t
wchar_t

扩展整数类型(如有)
atomic::fetch_add
atomic::fetch_sub
atomic::fetch_and
atomic::fetch_or
atomic::fetch_xor
atomic::operator++
atomic::operator--
operator (comp. assign.)
对于bool实例化,仅支持通用原子操作。
请注意,大多数*C 风格原子类型*都是这些特化类型的别名(或这些特化继承的基类的别名)。

atomic 也为所有指针类型部分特化,并具有以下附加成员函数:
特化附加成员函数
U*
(对于任何类型 U
atomic::fetch_add
atomic::fetch_sub
atomic::operator++
atomic::operator--
operator (comp. assign.)