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