Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der <atomic> Header stellt die folgenden Funktionen bereit:
atomic_compare_exchange_strong
Führt einen atomischen Vergleichs- und Austausch-Vorgang aus.
template <class Ty>
inline bool atomic_compare_exchange_strong(
volatile atomic<Ty>* Atom,
Ty* Exp,
Value) noexcept;
template <class Ty>
inline bool atomic_compare_exchange_strong(
atomic<Ty>* Atom,
Ty* Exp,
Ty Value) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Wert des Typs Ty gespeichert wird.
Exp
Ein Zeiger auf einen Wert des Typs Ty.
Value
Ein Wert vom Typ Ty.
Rückgabewert
true wenn die Werte gleich sind, andernfalls false.
Hinweise
Diese Methode führt mithilfe impliziter memory_order.memory_order_seq_cst Argumente einen Atomabgleichs- und Austauschvorgang aus. Weitere Informationen finden Sie unter atomic_compare_exchange_strong_explicit.
atomic_compare_exchange_strong_explicit
Führt einen atomic compare and exchange Vorgang aus.
template <class T>
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 ein atomic-Objekt, in dem ein Wert des Typs Ty gespeichert wird.
Exp
Ein Zeiger auf einen Wert des Typs Ty.
Value
Ein Wert vom Typ Ty.
Order1
Erstes memory_order Argument.
Order2
Zweites memory_order-Argument. Der Wert von Order2 kann nicht memory_order_release oder memory_order_acq_rel sein, er kann nicht stärker als der Wert von Order1 sein.
Rückgabewert
true wenn die Werte gleich sind, andernfalls false.
Hinweise
Ein atomic compare and exchange operation Vergleicht den Wert, der im Objekt gespeichert ist, auf den verwiesen wird, mit Atom dem Wert, auf Expden verwiesen wird. Wenn die Werte gleich sind, wird der wert, der im Objekt gespeichert ist, auf Atom das verwiesen wird, durch einen Lese-Modify-Write-Vorgang ersetzt Value und die durch diese angegebenen Speicherreihenfolgeeinschränkungen angewendet Order1. Wenn die Werte nicht gleich sind, ersetzt der Vorgang den Wert, auf den verwiesen wird, durch Exp den Wert, der im Objekt gespeichert ist, auf Atom das verwiesen wird, und wendet die durch diese angegebenen Order2Speicherreihenfolgeeinschränkungen an.
atomic_compare_exchange_weak
Führt einen schwachen atomischen Vergleichs- und Austauschvorgang aus.
template <class Ty>
inline bool atomic_compare_exchange_strong(
volatile atomic<Ty>* Atom,
Ty* Exp,
Ty Value) noexcept;
template <class Ty>
inline bool atomic_compare_exchange_strong(
atomic<Ty>* Atom,
Ty* Exp,
Ty Value) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Wert des Typs Ty gespeichert wird.
Exp
Ein Zeiger auf einen Wert des Typs Ty.
Value
Ein Wert vom Typ Ty.
Rückgabewert
true wenn die Werte gleich sind, andernfalls false.
Hinweise
Diese Methode führt einen schwachen Atomabgleichs- und Austauschvorgang mit impliziten memory_order.memory_order_seq_cst Argumenten aus. Weitere Informationen finden Sie unter atomic_compare_exchange_weak_explicit.
atomic_compare_exchange_weak_explicit
Führt einen schwachen atomischen Vergleichs- und Austauschvorgang aus.
template <class Ty>
inline bool atomic_compare_exchange_weak_explicit(
volatile atomic<Ty>* Atom,
Ty* Exp,
Ty Value,
memory_order Order1,
memory_order Order2) noexcept;
template <class Ty>
inline bool atomic_compare_exchange_weak_explicit(
atomic<Ty>* Atom,
Ty* Exp,
Ty Value,
memory_order Order1,
memory_order Order2) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Wert des Typs Ty gespeichert wird.
Exp
Ein Zeiger auf einen Wert des Typs Ty.
Value
Ein Wert vom Typ Ty.
Order1
Erstes memory_order Argument.
Order2
Zweites memory_order-Argument. Der Wert von Order2 kann weder memory_order_release oder memory_order_acq_rel sein, noch kann er stärker als der Wert von Order1 sein.
Rückgabewert
true wenn die Werte gleich sind, andernfalls false.
Hinweise
Sowohl die starken als auch die schwachen Aromen einer atomic compare and exchange operation Garantie, dass sie den neuen Wert nicht speichern, wenn die erwarteten und aktuellen Werte nicht gleich sind. Der starke Geschmack garantiert, dass er den neuen Wert speichert, wenn die erwarteten und aktuellen Werte gleich sind. Der schwache Geschmack kann manchmal zurückgeben false und den neuen Wert nicht speichern, auch wenn die aktuellen und erwarteten Werte gleich sind. Mit anderen Worten, die Funktion wird zurückgegeben false, aber eine spätere Untersuchung des erwarteten Werts könnte zeigen, dass sie sich nicht geändert hat und daher gleich sein sollte.
atomic_exchange
Verwendet Value, um den gespeicherten Wert von Atom zu ersetzen.
template <class T>
inline Ty atomic_exchange(volatile atomic<Ty>* _Atom, Ty Value) noexcept;
template <class Ty>
inline T atomic_exchange(atomic<Ty>* Atom, Ty Value) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Wert des Typs Ty gespeichert wird.
Value
Ein Wert vom Typ Ty.
Rückgabewert
Der gespeicherte Wert von Atom vor dem Austausch.
Hinweise
Die atomic_exchange Funktion führt einen Read-Modify-Write-Vorgang aus, um den Wert auszutauschen, der mit AtomValuememory_order.memory_order_seq_cstder
atomic_exchange_explicit
Ersetzt den gespeicherten Wert von Atom durch Value.
template <class Ty>
inline Ty atomic_exchange_explicit(
volatile atomic<Ty>* Atom,
Ty Value,
memory_order Order) noexcept;
template <class Ty>
inline Ty atomic_exchange_explicit(
atomic<Ty>* Atom,
Ty Value,
memory_order Order) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Wert des Typs Ty gespeichert wird.
Value
Ein Wert vom Typ Ty.
Order
Ein memory_order.
Rückgabewert
Der gespeicherte Wert von Atom vor dem Austausch.
Hinweise
Die atomic_exchange_explicit Funktion führt einen Lese-Modify-Write-Vorgang aus, um den Wert auszutauschen, der in den Speichereinschränkungen gespeichert AtomValueist, die durch Orderangegeben werden.
atomic_fetch_add
Fügt einem vorhandenen Wert einen in einem atomic-Objekt gespeicherten Wert hinzu.
template <class T>
T* atomic_fetch_add(volatile atomic<T*>* Atom, ptrdiff_t Value) noexcept;
template <class T>
T* atomic_fetch_add(atomic<T*>* Atom, ptrdiff_t Value) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Zeiger auf den Typ T gespeichert wird.
Value
Ein Wert vom Typ ptrdiff_t.
Rückgabewert
Der Wert des Zeigers, der atomic im Objekt enthalten ist, unmittelbar vor der Ausführung des Vorgangs.
Hinweise
Die atomic_fetch_add Funktion führt einen Read-Modify-Write-Vorgang aus, um den gespeicherten Wert Valueunter Verwendung der Atom Einschränkung atomisch hinzuzufügenmemory_order.memory_order_seq_cst.
Wenn der atomische Typ atomic_address ist, dann ist Value vom Typ ptrdiff_t, und der Vorgang behandelt den gespeicherten Zeiger als char *.
Dieser Vorgang wird auch bei Integraltypen überladen:
integral atomic_fetch_add(volatile atomic-integral* Atom, integral Value) noexcept;
integral atomic_fetch_add(atomic-integral* Atom, integral Value) noexcept;
atomic_fetch_add_explicit
Fügt einem vorhandenen Wert einen in einem atomic-Objekt gespeicherten Wert hinzu.
template <class T>
T* atomic_fetch_add_explicit(
volatile atomic<T*>* Atom,
ptrdiff_t Value,
memory_order Order) noexcept;
template <class T>
T* atomic_fetch_add_explicit(
atomic<T*>* Atom,
ptrdiff_t Value,
memory_order Order) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Zeiger auf den Typ T gespeichert wird.
Value
Ein Wert vom Typ ptrdiff_t.
Rückgabewert
Der Wert des Zeigers, der atomic im Objekt enthalten ist, unmittelbar vor der Ausführung des Vorgangs.
Hinweise
Die atomic_fetch_add_explicit Funktion führt einen Read-Modify-Write-Vorgang aus, um den gespeicherten Wert in atomisch hinzuzufügen Value , Atominnerhalb der einschränkungen, die memory_order durch Orderangegeben werden.
Wenn der atomische Typ atomic_address ist, dann ist Value vom Typ ptrdiff_t, und der Vorgang behandelt den gespeicherten Zeiger als char *.
Dieser Vorgang wird auch bei Integraltypen überladen:
integral atomic_fetch_add_explicit(
volatile atomic-integral* Atom,
integral Value,
memory_order Order) noexcept;
integral atomic_fetch_add_explicit(
atomic-integral* Atom,
integral Value,
memory_order Order) noexcept;
atomic_fetch_and
Führt ein bitweises & auf einem Wert und einem vorhandenen in einem atomic-Objekt gespeicherten Wert aus.
template <class T>
inline T atomic_fetch_and(volatile atomic<T>* Atom, T Value) noexcept;
template <class T>
inline T atomic_fetch_and(volatile atomic<T>* Atom, T Value) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Wert des Typs T gespeichert wird.
Value
Ein Wert vom Typ T.
Rückgabewert
Der Wert, der atomic vom Objekt unmittelbar vor der Ausführung des Vorgangs enthalten ist.
Hinweise
Die atomic_fetch_and Funktion führt einen Lese-Modify-Write-Vorgang aus, um den gespeicherten Wert Atom durch einen bitweisen &Value und den aktuellen Wert zu ersetzen, der in Atomder memory_order.memory_order_seq_cst Einschränkung gespeichert ist.
atomic_fetch_and_explicit
Führt ein bitweises & eines Werts und einen vorhandenen in einem atomic-Objekt gespeicherten Wert aus.
template <class T>
inline T atomic_fetch_and_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
template <class T>
inline T atomic_fetch_and_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Wert des Typs T gespeichert wird.
Value
Ein Wert vom Typ T.
Order
Ein memory_order.
Rückgabewert
Der Wert, der atomic vom Objekt unmittelbar vor der Ausführung des Vorgangs enthalten ist.
Hinweise
Die atomic_fetch_and_explicit Funktion führt einen Lese-Modify-Write-Vorgang aus, um den gespeicherten Wert Atom durch einen bitweisen & und Value den aktuellen Wert zu ersetzen, der in Atomden speichereinschränkungen gespeichert ist, die durch Orderangegeben werden.
atomic_fetch_or
Führt ein bitweises or auf einem Wert und einem vorhandenen in einem atomic-Objekt gespeicherten Wert aus.
template <class T>
inline T atomic_fetch_or (volatile atomic<T>* Atom, T Value) noexcept;
template <class T>
inline T atomic_fetch_or (volatile atomic<T>* Atom, T Value) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Wert des Typs T gespeichert wird.
Value
Ein Wert vom Typ T.
Rückgabewert
Der Wert, der atomic vom Objekt unmittelbar vor der Ausführung des Vorgangs enthalten ist.
Hinweise
Die atomic_fetch_or Funktion führt einen Lese-Modify-Write-Vorgang aus, um den gespeicherten Wert Atom durch einen bitweisen or und Value den aktuellen Wert zu ersetzen, der in Atom, mithilfe der memory_order.memory_order_seq_cst.
atomic_fetch_or_explicit
Führt ein bitweises or auf einem Wert und einem vorhandenen in einem atomic-Objekt gespeicherten Wert aus.
template <class T>
inline T atomic_fetch_or_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
template <class T>
inline T atomic_fetch_or_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Wert des Typs T gespeichert wird.
Value
Ein Wert vom Typ T.
Order
Ein memory_order.
Rückgabewert
Der Wert, der atomic vom Objekt unmittelbar vor der Ausführung des Vorgangs enthalten ist.
Hinweise
Die atomic_fetch_or_explicit Funktion führt einen Lese-Modify-Write-Vorgang aus, um den gespeicherten Wert Atom durch einen bitweisen or und Value den aktuellen Wert zu ersetzen, der in Atomden memory_order durch die angegebenen OrderEinschränkungen gespeichert wird.
atomic_fetch_sub
Subtrahiert einen Wert von einem in einem atomic-Objekt vorhandenen Wert.
template <class T>
T* atomic_fetch_sub(
volatile atomic<T*>* Atom,
ptrdiff_t Value) noexcept;
template <class T>
T* atomic_fetch_sub(
atomic<T*>* Atom,
ptrdiff_t Value) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Zeiger auf den Typ T gespeichert wird.
Value
Ein Wert vom Typ ptrdiff_t.
Rückgabewert
Der Wert des Zeigers, der atomic im Objekt enthalten ist, unmittelbar vor der Ausführung des Vorgangs.
Hinweise
Die atomic_fetch_sub Funktion führt einen Read-Modify-Write-Vorgang aus, um den gespeicherten Wert Valueunter Verwendung der Atom Einschränkung atomisch subtrahieren memory_order.memory_order_seq_cst zu können.
Wenn der atomische Typ atomic_address ist, dann ist Value vom Typ ptrdiff_t, und der Vorgang behandelt den gespeicherten Zeiger als char *.
Dieser Vorgang wird auch bei Integraltypen überladen:
integral atomic_fetch_sub(volatile atomic-integral* Atom, integral Value) noexcept;
integral atomic_fetch_sub(atomic-integral* Atom, integral Value) noexcept;
atomic_fetch_sub_explicit
Subtrahiert einen Wert von einem in einem atomic-Objekt vorhandenen Wert.
template <class T>
T* atomic_fetch_sub_explicit(
volatile atomic<T*>* Atom,
ptrdiff_t Value,
memory_order Order) noexcept;
template <class T>
T* atomic_fetch_sub_explicit(
atomic<T*>* Atom,
ptrdiff_t Value, memory_order Order) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Zeiger auf den Typ T gespeichert wird.
Value
Ein Wert vom Typ ptrdiff_t.
Rückgabewert
Der Wert des Zeigers, der atomic im Objekt enthalten ist, unmittelbar vor der Ausführung des Vorgangs.
Hinweise
Die atomic_fetch_sub_explicit Funktion führt einen Read-Modify-Write-Vorgang aus, um den gespeicherten Wert in atomisch subtrahieren Value , Atominnerhalb der einschränkungen, die memory_order durch Orderangegeben werden.
Wenn der atomische Typ atomic_address ist, dann ist Value vom Typ ptrdiff_t, und der Vorgang behandelt den gespeicherten Zeiger als char *.
Dieser Vorgang wird auch bei Integraltypen überladen:
integral atomic_fetch_sub_explicit(
volatile atomic-integral* Atom,
integral Value,
memory_order Order) noexcept;
integral atomic_fetch_sub_explicit(
atomic-integral* Atom,
integral Value,
memory_order Order) noexcept;
atomic_fetch_xor
Führt ein bitweises exclusive or auf einem Wert und einem vorhandenen in einem atomic-Objekt gespeicherten Wert aus.
template <class T>
inline T atomic_fetch_xor(volatile atomic<T>* Atom, T Value) noexcept;
template <class T>
inline T atomic_fetch_xor(volatile atomic<T>* Atom, T Value) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Wert des Typs T gespeichert wird.
Value
Ein Wert vom Typ T.
Rückgabewert
Der Wert, der atomic vom Objekt unmittelbar vor der Ausführung des Vorgangs enthalten ist.
Hinweise
Die atomic_fetch_xor Funktion führt einen Lese-Modify-Write-Vorgang aus, um den gespeicherten Wert Atom durch einen bitweisen exclusive or und Value den aktuellen Wert zu ersetzen, der in Atom, mithilfe der memory_order.memory_order_seq_cst.
atomic_fetch_xor_explicit
Führt einen bitweisen exclusive or Wert und einen vorhandenen Wert aus, der in einem atomic Objekt gespeichert ist.
template <class T>
inline T atomic_fetch_xor_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
template <class T>
inline T atomic_fetch_xor_explicit(
volatile atomic<T>* Atom,
T Value,
memory_order Order) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Wert des Typs T gespeichert wird.
Value
Ein Wert vom Typ T.
Order
Ein memory_order.
Rückgabewert
Der Wert, der atomic vom Objekt unmittelbar vor der Ausführung des Vorgangs enthalten ist.
Hinweise
Die atomic_fetch_xor_explicit Funktion führt einen Lese-Modify-Write-Vorgang aus, um den gespeicherten Wert Atom durch einen bitweisen exclusive orValue und den aktuellen Wert zu ersetzen, der in Atom, innerhalb der einschränkungen, die memory_order durch Orderangegeben werden.
atomic_flag_clear
Legt die bool Kennzeichnung in einem atomic_flag Objekt falseauf , innerhalb der memory_order.memory_order_seq_cst.
inline void atomic_flag_clear(volatile atomic_flag* Flag) noexcept;
inline void atomic_flag_clear(atomic_flag* Flag) noexcept;
Parameter
Flag
Ein Zeiger auf ein atomic_flag -Objekt.
atomic_flag_clear_explicit
Legt das bool Kennzeichen in einem atomic_flag Objekt innerhalb der angegebenen false Einschränkungen auf memory_orderfest.
inline void atomic_flag_clear_explicit(volatile atomic_flag* Flag, memory_order Order) noexcept;
inline void atomic_flag_clear_explicit(atomic_flag* Flag, memory_order Order) noexcept;
Parameter
Flag
Ein Zeiger auf ein atomic_flag -Objekt.
Order
Ein memory_order.
atomic_flag_test_and_set
Legt die bool Kennzeichnung in einem atomic_flag Objekt trueinnerhalb der Einschränkungen der memory_order.memory_order_seq_cst.
inline bool atomic_flag_test_and_set(volatile atomic_flag* Flag) noexcept;
inline bool atomic_flag_test_and_set(atomic_flag* Flag) noexcept;
Parameter
Flag
Ein Zeiger auf ein atomic_flag -Objekt.
Rückgabewert
Der Anfangswert von Flag.
atomic_flag_test_and_set_explicit
Legt das bool Kennzeichen in einem atomic_flag Objekt innerhalb der angegebenen true Einschränkungen auf memory_orderfest.
inline bool atomic_flag_test_and_set_explicit(volatile atomic_flag* Flag, memory_order Order) noexcept;
inline bool atomic_flag_test_and_set_explicit(atomic_flag* Flag, memory_order Order) noexcept;
Parameter
Flag
Ein Zeiger auf ein atomic_flag -Objekt.
Order
Ein memory_order.
Rückgabewert
Der Anfangswert von Flag.
atomic_init
Legt den gespeicherten Wert in einem atomic-Objekt fest.
template <class Ty>
inline void atomic_init(volatile atomic<Ty>* Atom, Ty Value) noexcept;
template <class Ty>
inline void atomic_init(atomic<Ty>* Atom, Ty Value) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Wert des Typs Ty gespeichert wird.
Value
Ein Wert vom Typ Ty.
Hinweise
atomic_init ist keine atomische Operation. Es ist nicht threadsicher.
atomic_is_lock_free
Gibt an, ob die atomischen Vorgänge auf ein atomic-Objekt sperrfrei sind.
template <class T>
inline bool atomic_is_lock_free(const volatile atomic<T>* Atom) noexcept;
template <class T>
inline bool atomic_is_lock_free(const atomic<T>* Atom) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Wert des Typs T gespeichert wird.
Rückgabewert
true wenn atomische Vorgänge auf Atom sperrfrei sind; andernfalls false.
Hinweise
Ein atomischer Typ ist sperrfrei, wenn für keine der atomischen Vorgänge auf diesem Typ Sperren verwendet werden. Wenn diese Funktion zurückgegeben wird true, ist der Typ sicher in Signalhandlern zu verwenden.
atomic_load
Ruft den gespeicherten Wert in einem atomic-Objekt ab.
template <class Ty>
inline Ty atomic_load(const volatile atomic<Ty>* Atom) noexcept;
template <class Ty>
inline Ty atomic_load(const atomic<Ty>* Atom) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Wert des Typs Ty enthalten ist.
Rückgabewert
Der abgerufene Wert, der in Atom-gespeichert wird.
Hinweise
atomic_load Verwendet implizit die memory_order.memory_order_seq_cst.
atomic_load_explicit
Ruft den gespeicherten Wert in einem atomic Objekt innerhalb eines angegebenen memory_orderObjekts ab.
template <class Ty>
inline Ty atomic_load_explicit(const volatile atomic<Ty>* Atom, memory_order Order) noexcept;
template <class Ty>
inline Ty atomic_load_explicit(const atomic<Ty>* Atom, memory_order Order) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Wert des Typs Ty enthalten ist.
Order
Ein memory_order. Verwenden Sie nicht memory_order_release oder memory_order_acq_rel.
Rückgabewert
Der abgerufene Wert, der in Atom-gespeichert wird.
atomic_signal_fence
Dient als Zaun – ein Speichersynchronisierungsgrundtyp, der die Sortierung zwischen Lade-/Speichervorgängen erzwingt – zwischen anderen Zaunen in einem aufrufenden Thread mit Signalhandlern, die im selben Thread ausgeführt werden.
inline void atomic_signal_fence(memory_order Order) noexcept;
Parameter
Order
Eine den Umgrenzungstyp bestimmende Speicheranordnungseinschränkung.
Hinweise
Das Order-Argument bestimmt den Umgrenzungstyp.
| Wert | Beschreibung |
|---|---|
memory_order_relaxed |
Die Umgrenzung hat keine Auswirkung. |
memory_order_consume |
Die Umgrenzung ist eine Abrufumgrenzung. |
memory_order_acquire |
Die Umgrenzung ist eine Abrufumgrenzung. |
memory_order_release |
Die Umgrenzung ist eine Releaseumgrenzung. |
memory_order_acq_rel |
Die Umgrenzung ist eine Abrufumgrenzung und eine Releaseumgrenzung. |
memory_order_seq_cst |
Die Umgrenzung ist eine Abrufumgrenzung und eine Releaseumgrenzung, und sie ist sequenziell konsistent. |
atomic_store
Atomar speichert einen Wert in einem atomic Objekt.
template <class Ty>
inline Ty atomic_store_explicit(const volatile atomic<Ty>* Atom, Ty Value) noexcept;
template <class Ty>
inline Ty atomic_store_explicit(const atomic<Ty>* Atom, T Value) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Wert des Typs Ty enthalten ist.
Value
Ein Wert vom Typ Ty.
Hinweise
atomic_storespeichert Value in dem Objekt, auf das innerhalb der Atom Einschränkung verwiesen memory_order.memory_order_seq_cstwird.
atomic_store_explicit
Atomar speichert einen Wert in einem atomic Objekt.
template <class Ty>
inline Ty atomic_store_explicit(
const volatile atomic<Ty>* Atom,
Ty Value,
memory_order Order) noexcept;
template <class Ty>
inline Ty atomic_store_explicit(
const atomic<Ty>* Atom,
T Value,
memory_order Order) noexcept;
Parameter
Atom
Ein Zeiger auf ein atomic-Objekt, in dem ein Wert des Typs Ty enthalten ist.
Value
Ein Wert vom Typ Ty.
Order
Ein memory_order. Verwenden Sie nicht memory_order_consume, memory_order_acquire, oder memory_order_acq_rel.
Hinweise
atomic_store speichert Value in dem Objekt, auf das innerhalb der von Atom angegebenen memory_order von Order gezeigt wird.
atomic_thread_fence
Dient als Zaun – ein Speichersynchronisierungsgrundtyp, der die Sortierung zwischen Lade-/Speichervorgängen ohne einen zugeordneten atomischen Vorgang erzwingt.
inline void atomic_thread_fence(memory_order Order) noexcept;
Parameter
Order
Eine den Umgrenzungstyp bestimmende Speicheranordnungseinschränkung.
Hinweise
Das Order-Argument bestimmt den Umgrenzungstyp.
| Wert | Beschreibung |
|---|---|
memory_order_relaxed |
Die Umgrenzung hat keine Auswirkung. |
memory_order_consume |
Die Umgrenzung ist eine Abrufumgrenzung. |
memory_order_acquire |
Die Umgrenzung ist eine Abrufumgrenzung. |
memory_order_release |
Die Umgrenzung ist eine Releaseumgrenzung. |
memory_order_acq_rel |
Die Umgrenzung ist eine Abrufumgrenzung und eine Releaseumgrenzung. |
memory_order_seq_cst |
Die Umgrenzung ist eine Abrufumgrenzung und eine Releaseumgrenzung, und sie ist sequenziell konsistent. |
kill_dependency
Entfernt eine Abhängigkeit.
template <class Ty>
Ty kill_dependency(Ty Arg) noexcept;
Parameter
Arg
Ein Wert vom Typ Ty.
Rückgabewert
Der Rückgabewert ist Arg. Die Auswertung von Arg enthält keine Abhängigkeit vom Funktionsaufruf. Durch Unterbrechen einer möglichen Abhängigkeitskette könnte die Funktion zulassen, dass der Compiler effizienteren Code generiert.