<atomic>
-Funktionen
atomic_compare_exchange_strong
atomic_compare_exchange_strong_explicit
atomic_compare_exchange_weak
atomic_compare_exchange_weak_explicit
atomic_exchange
atomic_exchange_explicit
atomic_fetch_add
atomic_fetch_add_explicit
atomic_fetch_and
atomic_fetch_and_explicit
atomic_fetch_or
atomic_fetch_or_explicit
atomic_fetch_sub
atomic_fetch_sub_explicit
atomic_fetch_xor
atomic_fetch_xor_explicit
atomic_flag_clear
atomic_flag_clear_explicit
atomic_flag_test_and_set
atomic_flag_test_and_set_explicit
atomic_init
atomic_is_lock_free
atomic_load
atomic_load_explicit
atomic_signal_fence
atomic_store
atomic_store_explicit
atomic_thread_fence
kill_dependency
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 Exp
den 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 Order2
Speicherreihenfolgeeinschrä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 Value
Atom
memory_order.memory_order_seq_cst
der
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 Atom
Value
ist, die durch Order
angegeben 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 Atom
unter Verwendung der memory_order.memory_order_seq_cst
Einschränkung atomisch hinzuzufügenValue
.
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
, Atom
innerhalb der einschränkungen, die memory_order
durch Order
angegeben 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 Atom
der 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 Atom
den speichereinschränkungen gespeichert ist, die durch Order
angegeben 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 Atom
den memory_order
durch die angegebenen Order
Einschrä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 Atom
unter Verwendung der memory_order.memory_order_seq_cst
Einschränkung atomisch subtrahieren Value
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
, Atom
innerhalb der einschränkungen, die memory_order
durch Order
angegeben 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 or
Value
und den aktuellen Wert zu ersetzen, der in Atom
, innerhalb der einschränkungen, die memory_order
durch Order
angegeben werden.
atomic_flag_clear
Legt die bool
Kennzeichnung in einem atomic_flag
Objekt false
auf , 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 memory_order
Einschränkungen auf false
fest.
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 true
innerhalb 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 memory_order
Einschränkungen auf true
fest.
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_order
Objekts 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_store
speichert Value
in dem Objekt, auf das innerhalb der memory_order.memory_order_seq_cst
Einschränkung verwiesen Atom
wird.
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.