Freigeben über


atomic::compare_exchange_strong-Methode

Führt ein unteilbares vergleichen und austauschen 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
    Zweite memory_order-Argument.

Rückgabewert

bool, das das Ergebnis des Wertsvergleiches angibt.

Hinweise

Dieses atomare vergleichen und Austauschvorgang vergleicht den Wert, der in *this mit Exp gespeichert wird.Wenn die Werte gleich sind, wird der Vorgang den Wert, der in *this mit Val gespeichert wird, indem ein read-modify-write Vorgang verwendet und die Arbeitsspeicherreihenfolgeneinschränkungen anwenden, die von Order1 angegeben werden.Wenn die Werte nicht gleich sind, verwendet der Vorgang den Wert, der in *this gespeichert wurde, um Exp zu ersetzen und übernimmt die Arbeitsspeicherreihenfolgeneinschränkungen, die von Order2 angegeben werden.

Überladungen, die über keine zweite memory_order verfügen, verwenden eine implizite Order2, die entsprechend dem Wert der Order1 ist.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 darf nicht als Wert von Order1 stärker sein.

Anforderungen

Header: atomar

Namespace: std

Siehe auch

Referenz

atomic_compare_exchange_strong_explicit-Funktion

atomic-Struktur

<atomic>

memory_order