Metoda Atomic::compare_exchange_strong
Wykonuje atomic porównywanie i wymiany operacji na *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;
Parametry
Exp
Wartość typu Ty.Value
Wartość typu Ty.Order1
Pierwszy memory_order argumentu.Order2
Drugi memory_order argumentu.
Wartość zwracana
A bool wskazuje, że wynik porównania wartości.
Uwagi
To atomic porównywanie i wymiany operacji porównuje wartość przechowywaną w *this z Exp.Jeśli wartości są równe, operacja zastępuje wartość przechowywaną w *this z Val za pomocą read-modify-write operacji oraz stosowanie pamięci zamówienia ograniczenia, które są określone przez Order1.Jeśli wartości nie są równe, operacja używa wartości przechowywanych w *this do zastąpienia Exp i stosuje ograniczenia zamówienia pamięci, które są określone przez Order2.
Overloads, które nie mają drugi memory_order użyć niejawnych Order2 jest oparty na wartość Order1.If Order1 is memory_order_acq_rel, Order2 is memory_order_acquire.If Order1 is memory_order_release, Order2 is memory_order_relaxed.W innych przypadkach Order2 jest równa Order1.
Dla overloads, które dwóch memory_order parametrów, wartość Order2 nie może być memory_order_release lub memory_order_acq_reli nie może być silniejszy niż wartość Order1.
Wymagania
Nagłówek: atomic
Obszar nazw: std