函式
<atomic>

std::atomic_fetch_xor_explicit

template (integral) (1)
template <class T>T atomic_fetch_xor_explicit (volatile atomic<T>* obj,                             T val, memory_order sync) noexcept;template <class T>T atomic_fetch_xor_explicit (atomic<T>* obj,                             T val, memory_order sync) noexcept;
過載 (2)
T atomic_fetch_xor_explicit (volatile A* obj, T val, memory_order sync) noexcept;T atomic_fetch_xor_explicit (A* obj, T val, memory_order sync) noexcept;
將包含的值進行按位異或(顯式記憶體順序)
讀取 obj 中包含的值,並用該值與 val 進行按位異或(按位除去或)操作的結果來替換它。

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

該函式使用 sync 引數指定的記憶體順序進行同步。

請參閱 atomic::fetch_xor 以獲取 atomic 的等效成員函式。

引數

obj
指向包含整數值的 atomic 物件的指標。
型別 A 代表其他過載的 原子型別(以防庫不將 C 風格的原子型別 實現為 atomic 的例項化)。
val
要應用的值。
T 是原子物件(atomic 的模板引數)所包含的值的整數型別
sync
操作的同步模式。
這應該是 memory_order enum 型別的值之一。

返回值

呼叫前的儲存值。
T 是原子物件(atomic 的模板引數)所包含的值的整數型別

資料競爭

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

異常安全

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

另見