Freigeben über


<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 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 ValueAtom memory_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 Atom Valueist, 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 Atomunter 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 , 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 Atomunter 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 , 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 or Value 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 memory_order Einschränkungen auf falsefest.

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 memory_order Einschränkungen auf truefest.

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 memory_order.memory_order_seq_cst Einschränkung verwiesen Atomwird.

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.

Siehe auch

<atomic>