Share via


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_releasememory_order_acq_rel,而且不能強於 Order1 的値。

需求

**標頭:**atomic

命名空間: std

請參閱

參考

atomic_compare_exchange_weak_explicit 函式

atomic 結構

<atomic>

memory_order