函式
<atomic>

std::atomic_exchange

template (1)
template <class T> T atomic_exchange (volatile atomic<T>* obj, T val) noexcept;template <class T> T atomic_exchange (atomic<T>* obj, T val) noexcept;
過載 (2)
T atomic_exchange (volatile A* obj, T val) noexcept;T atomic_exchange (A* obj, T val) noexcept;
讀取並修改包含的值
val 替換 obj 中包含的值,並返回 obj 在呼叫之前的舊值。

整個操作是原子的(一個*原子讀-修改-寫*操作):在讀取 obj 的值(用於返回)和本函式修改它的時刻之間,obj 的值不會受到其他執行緒的影響。

有關 atomic::exchange 的成員函式,請參閱 atomic

引數

obj
指向 atomic 物件的指標。
型別 A 代表其他過載的 *原子型別* (如果庫不實現 *C 風格原子型別* 作為 atomic 的例項)。
val
用於初始化包含物件的值。
T 是原子物件中包含的值的型別(atomic 的模板引數)。

返回值

obj 在呼叫之前包含的值。
T 是所包含值(atomic 的模板引數)的型別。

資料競爭

無資料競爭(原子操作)。該操作使用*順序一致性*(memory_order_seq_cst)。

異常安全

無異常保證: 絕不丟擲異常。

另見