共用方式為


atomic::compare_exchange_strong 方法

執行 原子比較和 交換 *this的作業。

bool compare_exchange_strong(
   Ty& Exp,
   Ty Value,
   memory_order Order1,
   memory_order Order2
) volatile _NOEXCEPT;
bool compare_exchange_strong(
   Ty& Exp,
   Ty Value,
   memory_order Order1,
   memory_order Order2
) _NOEXCEPT;
bool compare_exchange_strong(
   Ty& Exp,
   Ty Value,
   memory_order Order1 = memory_order_seq_cst
) volatile _NOEXCEPT;
bool compare_exchange_strong(
   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 儲存和 Val 使用 read-modify-write 作業並套用記憶體順序條件約束。 Order1指定的值。 如果值不相等,作業會使用在 *this 儲存取代 Exp 的值並套用由指定的 Order2記憶體順序限制。

沒有秒 memory_order 使用隱含 Order2 根據 Order1值的多載。 如果 Order1 是 memory_order_acq_rel,Order2 是 memory_order_acquire。 如果 Order1 是 memory_order_release,Order2 是 memory_order_relaxed。 在所有其他情況下, Order2 與 Order1相等。

對採用兩個 memory_order 參數的多載, Order2 的值小於 Order1的值不可以是 memory_order_releasememory_order_acq_rel,而且無法強制。

需求

不可部分完成的作業。標題:

命名空間: std

請參閱

參考

atomic_compare_exchange_strong_explicit 函式

不可部分完成的結構

<atomic>

memory_order