Freigeben über


atomic_compare_exchange_strong_explicit-Funktion

Führt ein unteilbares vergleichen und austauschen Vorgang aus.

template <class _Ty>
inline bool atomic_compare_exchange_strong_explicit(
   volatile atomic<Ty> *Atom,
   Ty *Exp,
   Ty Value,
   memory_order Order1,
   memory_order Order2
) _NOEXCEPT;

template <class Ty>
inline bool atomic_compare_exchange_strong_explicit(
   atomic<Ty> *Atom,
   Ty *Exp,
   Ty Value,
   memory_order Order1,
   memory_order Order2
) _NOEXCEPT;

Parameter

  • Atom
    Ein Zeiger auf einen atomic-Objekt, das einen Wert des Typs Ty speichert.

  • Exp
    Ein Zeiger auf einen Wert des Typs Ty.

  • Value
    Ein Wert vom Typ Ty.

  • Order1
    Erstes memory_order-Argument.

  • Order2
    Zweite memory_order-Argument.Der Wert von Order2 kann nicht memory_order_release sein, oder memory_order_acq_rel, kann nicht als Wert von Order1 stärker sein.

Rückgabewert

bool, das das Ergebnis des Wertsvergleiches angibt.

Hinweise

Ein unteilbares vergleichen und Austauschvorgang vergleicht den Wert, der im - Objekt gespeichert wird, das auf durch Atom mit dem Wert angezeigt wird, der auf durch Exp gezeigt wird.Wenn die Werte gleich sind, wird der Wert, der im - Objekt gespeichert wird, das auf durch atom gezeigt wird, durch Val ersetzt, indem ein read-modify-write Vorgang verwendet und die Arbeitsspeicherreihenfolgeneinschränkungen anwenden, die von Order1 angegeben werden.Wenn die Werte nicht übereinstimmen, wird der Vorgang den Wert zu, der durch Exp mit dem Wert angezeigt wird, wird der im - Objekt gespeichert, das auf durch Atom dargestellt und die Arbeitsspeicherreihenfolgeneinschränkungen angewendet wird, die von Order2 angegeben werden.

Anforderungen

Header: atomar

Namespace: std

Siehe auch

Referenz

<atomic>

atomic-Struktur