Udostępnij za pośrednictwem


atomic::compare_exchange_strong — Metoda

Wykonuje słabe porównanie atomowe i wymianę 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 argument.

  • Order2
    Drugi memory_order argument.

Wartość zwracana

bool , która wskazuje wynik porównania wartości.

Uwagi

Ta operacja porównanie atomiczne i wymiana porównuje wartość, która jest przechowywana w *this z Exp.Jeśli wartości są równe, operacja zastępuje wartość, która jest przechowywana w *this z Val za pomocą operacji read-modify-write i stosując ograniczenia zlecenia pamięci, które są określone przez Order1.Jeśli wartości nie są równe, operacja wykorzystuje wartość, która jest przechowywana w *this, aby zastąpić Exp i zastosować ograniczenia zlecenia pamięci, które są określone przez Order2.

Przeciążenia, które nie mają drugiego memory_order używają ukrytego Order2 opartego na wartości Order1.Jeśli Order1 ma wartość memory_order_acq_rel, Order2 ma wartość memory_order_acquire.Jeśli Order1 ma wartość memory_order_release, Order2 ma wartość memory_order_relaxed.We wszystkich innych przypadkach Order2 jest równy Order1.

W przypadku przeciążeń, które pobierają dwa parametry memory_order, wartość Order2 nie może być memory_order_release lub memory_order_acq_reli nie może być silniejsza niż wartość Order1.

Wymagania

Nagłówek: niepodzielny

Przestrzeń nazw: std

Zobacz też

Informacje

atomic_compare_exchange_strong_explicit — Funkcja

atomic — Struktura

<atomic>

memory_order