C++庫 - <atomic>



介紹

原子型別物件包含特定型別 (T) 的值,原子物件的特性是,不同執行緒對該值的訪問不會導致資料競爭(即,這樣做是明確定義的行為,訪問被正確排序)。通常,對於所有其他物件,併發訪問同一物件而可能導致資料競爭的操作都被視為未定義行為。

宣告

以下是 std::atomic 的宣告。

template <class T> struct atomic;

引數

T − 包含值的型別。

成員函式

序號 成員函式和定義
1 (建構函式)

構造一個原子物件

2 operator=

將值儲存到原子物件中

3 is_lock_free

檢查原子物件是否無鎖

4 store

以原子方式將原子物件的值替換為非原子引數

5 load

以原子方式獲取原子物件的值

6 operator T

從原子物件載入值

7 exchange

以原子方式替換原子物件的值並獲取之前儲存的值

8 compare_exchange_weak & compare_exchange_strong

以原子方式將原子物件的值與非原子引數進行比較,如果相等則執行原子交換,否則執行原子載入

某些特化支援的操作

序號 操作和定義
1 fetch_add

以原子方式將引數新增到原子物件中儲存的值,並獲取之前儲存的值

2 fetch_sub

以原子方式從原子物件中儲存的值減去引數,並獲取之前儲存的值

3 fetch_and

以原子方式執行引數和原子物件的值之間的按位與運算,並獲取之前儲存的值

4 fetch_or

以原子方式執行引數和原子物件的值之間的按位或運算,並獲取之前儲存的值

5 fetch_xor

以原子方式將原子物件的值與非原子引數進行比較,如果相等則執行原子交換,否則執行原子載入

6 operator++

將原子值加一

7 operator--

將原子值減一

atomic.htm
廣告