標頭檔案

<atomic>

原子型別
原子型別是封裝了一個值的型別,對其訪問保證不會導致資料競爭,並且可用於同步不同執行緒之間的記憶體訪問。

此標頭檔案聲明瞭兩個 C++ 類,atomicatomic_flag,它們在自包含的類中實現了原子型別的所有特性。該標頭檔案還聲明瞭一整套與 C 語言中的原子支援相容的 C 風格 型別和函式。


型別


C 風格原子型別

以下原子型別也在此標頭檔案中定義;每種型別的行為都與 atomic 對所列包含型別的相應例項化相同。
包含型別原子型別描述
boolatomic_bool
charatomic_char用於基本整數型別的原子型別。
這些是 atomic 類模板相應完全特化的 typedef,或者是這種特化的基類。
signed charatomic_schar
unsigned charatomic_uchar
shortatomic_short
unsigned shortatomic_ushort
intatomic_int
unsigned intatomic_uint
longatomic_long
unsigned longatomic_ulong
long longatomic_llong
unsigned long longatomic_ullong
wchar_tatomic_wchar_t
char16_tatomic_char16_t
char32_tatomic_char32_t
intmax_tatomic_intmax_t用於基於寬度的整數(在 <cinttypes> 中定義的那些)的原子型別。
這些型別中的每一個都是上述用於基本整數型別的原子型別之一的別名,或者是使用擴充套件整數型別atomic 類模板的完全特化。

其中 N 是 8、16、32、64 或庫支援的任何其他型別寬度之一。
uintmax_tatomic_uintmax_t
int_leastN_tatomic_int_leastN_t
uint_leastN_tatomic_uint_leastN_t
int_fastN_tatomic_int_fastN_t
uint_fastN_tatomic_uint_fastN_t
intptr_tatomic_intptr_t
uintptr_tatomic_uintptr_t
size_tatomic_size_t
ptrdiff_tatomic_ptrdiff_t

函式


原子物件函式 (C 風格)


原子標誌函式 (C 風格)


宏函式


宏常量

與型別相關定義為
ATOMIC_BOOL_LOCK_FREEbool如果型別從不無鎖,則為 0
如果型別有時無鎖,則為 1
如果型別總是無鎖,則為 2

atomic::is_lock_free 返回的值一致。
ATOMIC_CHAR_LOCK_FREEchar
signed char
unsigned char
ATOMIC_SHORT_LOCK_FREEshort
unsigned short
ATOMIC_INT_LOCK_FREEint
unsigned int
ATOMIC_LONG_LOCK_FREElong
unsigned long
ATOMIC_LLONG_LOCK_FREElong long
unsigned long long
ATOMIC_WCHAR_T_LOCK_FREEwchar_t
ATOMIC_CHAR16_T_LOCK_FREEchar16_t
ATOMIC_CHAR32_T_LOCK_FREEchar32_t
ATOMIC_POINTER_LOCK_FREEU*
(對於任何型別 U