atomic::compare_exchange_weak 方法
在 *this 執行 弱式不可部分完成比較和交換 作業。
bool compare_exchange_weak(
Ty& Exp,
Ty Value,
memory_order Order1,
memory_order Order2
) volatile _NOEXCEPT;
bool compare_exchange_weak(
Ty& Exp,
Ty Value,
memory_order Order1,
memory_order Order2
) _NOEXCEPT;
bool compare_exchange_weak(
Ty& Exp,
Ty Value,
memory_order Order1 = memory_order_seq_cst
) volatile _NOEXCEPT;
bool compare_exchange_weak(
Ty& Exp,
Ty Value,
memory_order Order1 = memory_order_seq_cst
) _NOEXCEPT;
參數
Exp
型別 Ty 的值。Value
型別 Ty 的值。Order1
第一個 memory_order 引數。Order2
第二個 memory_order 引數。
傳回值
指出數值比較結果的 bool。
備註
這個 不可部分完成比較和交換 作業比較儲存於 *this 和 Exp的值。 如果值相等,作業會將儲存於 *this 的値用 read-modify-write 作業替換為 Val ,以及套用由 Order1指定的記憶體順序條件約束。 如果值不相等,作業使用儲存於 *this 的値取代 Exp 的值並套用由 Order2指定的記憶體順序條件約束。
當要比較的值相等,弱式 不可部分完成比較操作執行交換作業。 如果值不相等,作業不保證執行交換。
沒有第二個 memory_order 的多載 根據 Order1值使用隱含 Order2。 如果 Order1 是 memory_order_acq_rel,Order2 是 memory_order_acquire。 如果 Order1 是 memory_order_release,Order2 是 memory_order_relaxed。 在所有其他情況下, Order2 相當於 Order1。
對採用兩個 memory_order 參數的多載, Order2 的值不可以是 memory_order_release 或 memory_order_acq_rel,而且不能強於 Order1 的値。
需求
**標頭:**atomic
命名空間: std