類模板
<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.)