函式
<atomic>

std::atomic_exchange_explicit

template (1)
template <class T>T atomic_store_explicit (volatile atomic<T>* obj, T val, memory_order sync) noexcept;template <class T>T atomic_store_explicit (atomic<T>* obj, T val, memory_order sync) noexcept;
過載 (2)
T atomic_store_explicit (volatile A* obj, T val, memory_order sync) noexcept;T atomic_store_explicit (A* obj, T val, memory_order sync) noexcept;
讀寫包含的值(顯式記憶體順序)
obj 中包含的值替換為 val,並返回 obj 在替換之前的值。

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

有關 atomic 的等效成員函式,請參見 atomic::exchange

引數

obj
指向 atomic 物件的指標。
型別 A 代表其他過載的 *原子型別* (如果庫不實現 *C 風格原子型別* 作為 atomic 的例項)。
val
要賦給包含物件的值。
T 是原子物件中包含的值的型別(atomic 的模板引數)。
sync
操作的同步模式。
這應為 enum 型別 memory_order.
的值。

返回值

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

資料競爭

無資料競爭(原子操作)。記憶體順序由引數 sync 指定。

異常安全

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

另見