Udostępnij za pośrednictwem


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

Zobacz też

Informacje

Funkcja atomic_compare_exchange_strong_explicit

Struktura Atomowej

<atomic>

memory_order