次の方法で共有


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 値の比較結果を示す。

解説

この 分割し、交換、比較 操作は Expの *this に格納されている値を比較します。値が等しい場合、操作は Val の *this で read-modify-write 操作を使用して Order1が指定したメモリの順序の制約を適用することによって格納される値を置き換えます。値がではない、操作は Exp を置き換えるために使用 *this に格納し、Order2が指定したメモリの順序の値を制約を適用します。

Order1の値に基づく秒の memory_order の使用が暗黙のオーバーロード Order2 ありません。Order1 が memory_order_acq_rel の場合、Order2 は memory_order_acquire です。Order1 が memory_order_release の場合、Order2 は memory_order_relaxed です。それ以外の場合は、Order2 は Order1と同じです。

memory_order の 2 個のパラメーターを使用するオーバーロードでは、Order2 の値は memory_order_release または memory_order_acq_relであり Order1の値よりいなければなりません。

必要条件

ヘッダー: の分割

名前空間: std

参照

関連項目

atomic_compare_exchange_strong_explicit 関数

アトミック構造

<atomic>

memory_order