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