Freigeben über


atomic::compare_exchange_strong-Methode

Führt einen atomischen Vergleichs- und Austausch-Vorgang auf *this aus.

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;

Parameter

  • Exp
    Ein Wert vom Typ Ty.

  • Value
    Ein Wert vom Typ Ty.

  • Order1
    Erstes memory_order-Argument.

  • Order2
    Zweites memory_order-Argument.

Rückgabewert

Ein das Ergebnis des Wertevergleichs angebendes bool-Element.

Hinweise

Mit diesem atomischen Vergleichs- und Austausch-Vorgang wird der in *this mit Exp gespeicherte Wert vergleichen. Wenn die Werte sich entsprechen, wird der in *this gespeicherte Wert mit diesem Vorgang durch Val ersetzt, indem ein read-modify-write-Vorgang verwendet und die von Order1 angegebenen Einschränkungen der Speicherreihenfolge angewendet werden. Wenn die Werte sich nicht entsprechen, wird der in *this gespeicherte Wert mit dem Vorgang zum Ersetzen von Exp verwendet und die von Order2 angegebenen Einschränkungen der Arbeitsspeicherreihenfolge werden angewendet.

Für Überladungen ohne zweite memory_order wird eine implizite Order2 auf Grundlage des Werts von Order1 verwendet. Falls Order1memory_order_acq_rel lautet, ist Order2memory_order_acquire. Falls Order1memory_order_release lautet, ist Order2memory_order_relaxed. In allen anderen Fällen ist Order2 gleich Order1.

Für Überladungen, die zwei memory_order-Parameter annehmen, darf der Wert von Order2 nicht memory_order_release oder memory_order_acq_rel sein, und er darf nicht stärker als der Order1-Wert sein.

Anforderungen

Header: atomisch

Namespace: std

Siehe auch

Referenz

atomic_compare_exchange_strong_explicit-Funktion

atomic-Struktur

<atomic>

memory_order