fonctions<atomic>
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
Effectue une opération atomique de comparaison et d’échange.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui stocke une valeur de type Ty
.
Exp
Pointeur vers une valeur de type Ty
.
Value
Valeur de type Ty
.
Valeur de retour
true
si les valeurs sont égales, sinon false
.
Notes
Cette méthode effectue une opération de comparaison atomique et d’échange à l’aide d’arguments implicites memory_order.memory_order_seq_cst
. Pour plus d’informations, consultez atomic_compare_exchange_strong_explicit
.
atomic_compare_exchange_strong_explicit
Effectue une atomic compare and exchange
opération.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui stocke une valeur de type Ty
.
Exp
Pointeur vers une valeur de type Ty
.
Value
Valeur de type Ty
.
Order1
Premier memory_order
argument.
Order2
Deuxième argument memory_order
. La valeur de Order2
ne peut pas être memory_order_release
ou memory_order_acq_rel
, elle ne peut pas être supérieure à la valeur de Order1
.
Valeur de retour
true
si les valeurs sont égales, sinon false
.
Notes
Une atomic compare and exchange operation
comparaison de la valeur stockée dans l’objet pointé par Atom
rapport à la valeur pointée par Exp
. Si les valeurs sont égales, la valeur stockée dans l’objet pointé par Atom
est remplacée Value
par une opération en lecture-modification-écriture et en appliquant les contraintes d’ordre de mémoire spécifiées par Order1
. Si les valeurs ne sont pas égales, l’opération remplace la valeur pointée par Exp
la valeur stockée dans l’objet pointé vers Atom
et applique les contraintes d’ordre de mémoire spécifiées par Order2
.
atomic_compare_exchange_weak
Effectue une opération atomique faible de comparaison et d’échange.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui stocke une valeur de type Ty
.
Exp
Pointeur vers une valeur de type Ty
.
Value
Valeur de type Ty
.
Valeur de retour
true
si les valeurs sont égales, sinon false
.
Notes
Cette méthode effectue une opération de comparaison atomique et d’échange faible qui a des arguments implicitesmemory_order.memory_order_seq_cst
. Pour plus d’informations, consultez atomic_compare_exchange_weak_explicit
.
atomic_compare_exchange_weak_explicit
Effectue une opération atomique faible de comparaison et d’échange.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui stocke une valeur de type Ty
.
Exp
Pointeur vers une valeur de type Ty
.
Value
Valeur de type Ty
.
Order1
Premier memory_order
argument.
Order2
Deuxième argument memory_order
. La valeur de Order2
ne peut pas être memory_order_release
ou memory_order_acq_rel
, elle ne peut pas être non plus supérieure à la valeur de Order1
.
Valeur de retour
true
si les valeurs sont égales, sinon false
.
Notes
Les saveurs fortes et faibles d’une atomic compare and exchange operation
garantie qu’elles ne stockent pas la nouvelle valeur si les valeurs attendues et actuelles ne sont pas égales. La saveur forte garantit qu’elle stockera la nouvelle valeur si les valeurs attendues et actuelles sont égales. La saveur faible peut parfois retourner false
et ne pas stocker la nouvelle valeur même si les valeurs actuelles et attendues sont égales. En d’autres termes, la fonction retourne false
, mais un examen ultérieur de la valeur attendue peut révéler qu’elle n’a pas changé, et doit donc avoir comparé à égal.
atomic_exchange
Utilise Value
pour remplacer la valeur stockée de Atom
.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui stocke une valeur de type Ty
.
Value
Valeur de type Ty
.
Valeur de retour
Valeur stockée de Atom
avant l’échange.
Notes
La atomic_exchange
fonction effectue une opération en lecture-modification-écriture pour échanger la valeur stockée avec Atom
Value
, à l’aide du memory_order.memory_order_seq_cst
.
atomic_exchange_explicit
Remplace la valeur stockée de Atom
par 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;
Paramètres
Atom
Pointeur vers un objet atomic
qui stocke une valeur de type Ty
.
Value
Valeur de type Ty
.
Order
memory_order
.
Valeur de retour
Valeur stockée de Atom
avant l’échange.
Notes
La atomic_exchange_explicit
fonction effectue une opération en lecture-modification-écriture pour échanger la valeur stockée avec Atom
Value
, dans les contraintes de mémoire spécifiées par Order
.
atomic_fetch_add
Ajoute une valeur à une valeur existante stockée dans un objet atomic
.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui stocke un pointeur de type T
.
Value
Valeur de type ptrdiff_t
.
Valeur de retour
Valeur du pointeur contenu par l’objet atomic
immédiatement avant l’exécution de l’opération.
Notes
La atomic_fetch_add
fonction effectue une opération en lecture-modification-écriture pour ajouter Value
atomiquement à la valeur stockée dans Atom
, à l’aide de la memory_order.memory_order_seq_cst
contrainte.
Quand le type atomique est atomic_address
, Value
a le type ptrdiff_t
et l’opération traite le pointeur stocké comme un char *
.
Cette opération est également surchargée pour les types intégraux :
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
Ajoute une valeur à une valeur existante stockée dans un objet atomic
.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui stocke un pointeur de type T
.
Value
Valeur de type ptrdiff_t
.
Valeur de retour
Valeur du pointeur contenu par l’objet atomic
immédiatement avant l’exécution de l’opération.
Notes
La atomic_fetch_add_explicit
fonction effectue une opération en lecture-modification-écriture pour ajouter Value
atomiquement à la valeur stockée dans Atom
, dans les memory_order
contraintes spécifiées par Order
.
Quand le type atomique est atomic_address
, Value
a le type ptrdiff_t
et l’opération traite le pointeur stocké comme un char *
.
Cette opération est également surchargée pour les types intégraux :
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
Effectue une opération &
au niveau du bit sur une valeur et une valeur existante stockée dans un objet atomic
.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui stocke une valeur de type T
.
Value
Valeur de type T
.
Valeur de retour
Valeur contenue par l’objet atomic
immédiatement avant l’exécution de l’opération.
Notes
La atomic_fetch_and
fonction effectue une opération de lecture-modification-écriture pour remplacer la valeur stockée par Atom
un bit au niveau &
du bit et la valeur actuelle stockée dans , à Atom
l’aide de Value
la memory_order.memory_order_seq_cst
contrainte.
atomic_fetch_and_explicit
Effectue une opération &
au niveau du bit sur une valeur et une valeur existante stockée dans un objet atomic
.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui stocke une valeur de type T
.
Value
Valeur de type T
.
Order
memory_order
.
Valeur de retour
Valeur contenue par l’objet atomic
immédiatement avant l’exécution de l’opération.
Notes
La atomic_fetch_and_explicit
fonction effectue une opération en lecture-modification-écriture pour remplacer la valeur stockée par Atom
un bit au niveau &
du Value
bit et la valeur actuelle stockée dans Atom
, dans les contraintes de mémoire spécifiées par Order
.
atomic_fetch_or
Effectue une opération or
au niveau du bit sur une valeur et une valeur existante stockée dans un objet atomic
.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui stocke une valeur de type T
.
Value
Valeur de type T
.
Valeur de retour
Valeur contenue par l’objet atomic
immédiatement avant l’exécution de l’opération.
Notes
La atomic_fetch_or
fonction effectue une opération en lecture-modification-écriture pour remplacer la valeur stockée par Atom
un bit au niveau or
du Value
bit et la valeur actuelle qui est stockée dans Atom
, à l’aide du memory_order.memory_order_seq_cst
.
atomic_fetch_or_explicit
Effectue une opération or
au niveau du bit sur une valeur et une valeur existante stockée dans un objet atomic
.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui stocke une valeur de type T
.
Value
Valeur de type T
.
Order
memory_order
.
Valeur de retour
Valeur contenue par l’objet atomic
immédiatement avant l’exécution de l’opération.
Notes
La atomic_fetch_or_explicit
fonction effectue une opération en lecture-modification-écriture pour remplacer la valeur stockée par Atom
un bit au niveau or
du Value
bit et la valeur actuelle stockée dans Atom
, dans les memory_order
contraintes spécifiées par Order
.
atomic_fetch_sub
Soustrait une valeur d’une valeur existante stockée dans un objet atomic
.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui stocke un pointeur de type T
.
Value
Valeur de type ptrdiff_t
.
Valeur de retour
Valeur du pointeur contenu par l’objet atomic
immédiatement avant l’exécution de l’opération.
Notes
La atomic_fetch_sub
fonction effectue une opération de lecture-modification-écriture pour soustraire Value
atomiquement la valeur stockée dans Atom
, à l’aide de la memory_order.memory_order_seq_cst
contrainte.
Quand le type atomique est atomic_address
, Value
a le type ptrdiff_t
et l’opération traite le pointeur stocké comme un char *
.
Cette opération est également surchargée pour les types intégraux :
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
Soustrait une valeur d’une valeur existante stockée dans un objet atomic
.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui stocke un pointeur de type T
.
Value
Valeur de type ptrdiff_t
.
Valeur de retour
Valeur du pointeur contenu par l’objet atomic
immédiatement avant l’exécution de l’opération.
Notes
La atomic_fetch_sub_explicit
fonction effectue une opération en lecture-modification-écriture pour soustraire Value
atomiquement la valeur stockée dans Atom
, dans les memory_order
contraintes spécifiées par Order
.
Quand le type atomique est atomic_address
, Value
a le type ptrdiff_t
et l’opération traite le pointeur stocké comme un char *
.
Cette opération est également surchargée pour les types intégraux :
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
Effectue une opération exclusive or
au niveau du bit sur une valeur et une valeur existante stockée dans un objet atomic
.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui stocke une valeur de type T
.
Value
Valeur de type T
.
Valeur de retour
Valeur contenue par l’objet atomic
immédiatement avant l’exécution de l’opération.
Notes
La atomic_fetch_xor
fonction effectue une opération en lecture-modification-écriture pour remplacer la valeur stockée par Atom
un bit au niveau exclusive or
du Value
bit et la valeur actuelle qui est stockée dans Atom
, à l’aide du memory_order.memory_order_seq_cst
.
atomic_fetch_xor_explicit
Effectue un bit dans le sens exclusive or
du bit sur une valeur et une valeur existante stockée dans un atomic
objet.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui stocke une valeur de type T
.
Value
Valeur de type T
.
Order
memory_order
.
Valeur de retour
Valeur contenue par l’objet atomic
immédiatement avant l’exécution de l’opération.
Notes
La atomic_fetch_xor_explicit
fonction effectue une opération en lecture-modification-écriture pour remplacer la valeur stockée par Atom
un bit au niveau exclusive or
du Value
bit et la valeur actuelle stockée dans Atom
, dans les memory_order
contraintes spécifiées par Order
.
atomic_flag_clear
Définit l’indicateur bool
dans un atomic_flag
objet sur false
, dans le 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;
Paramètres
Flag
Pointeur vers un objet atomic_flag
.
atomic_flag_clear_explicit
Définit l’indicateur bool
dans un atomic_flag
objet false
sur , dans les contraintes spécifiées memory_order
.
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;
Paramètres
Flag
Pointeur vers un objet atomic_flag
.
Order
memory_order
.
atomic_flag_test_and_set
Définit l’indicateur bool
dans un atomic_flag
objet true
sur , dans les contraintes du 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;
Paramètres
Flag
Pointeur vers un objet atomic_flag
.
Valeur de retour
Valeur initiale de Flag
.
atomic_flag_test_and_set_explicit
Définit l’indicateur bool
dans un atomic_flag
objet true
sur , dans les contraintes spécifiées memory_order
.
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;
Paramètres
Flag
Pointeur vers un objet atomic_flag
.
Order
memory_order
.
Valeur de retour
Valeur initiale de Flag
.
atomic_init
Définit la valeur stockée dans un objet atomic
.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui stocke une valeur de type Ty
.
Value
Valeur de type Ty
.
Notes
atomic_init
n’est pas une opération atomique. Ce n’est pas thread-safe.
atomic_is_lock_free
Spécifie si les opérations atomiques sur un objet atomic
sont sans verrou.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui stocke une valeur de type T
.
Valeur de retour
true
si des opérations atomiques sur Atom
sont sans verrou ; sinon, false
.
Notes
Un type atomique est sans verrou si aucune opération atomique sur ce type utilise un verrou. Si cette fonction retourne true
, le type est sûr à utiliser dans les gestionnaires de signal.
atomic_load
Récupère la valeur stockée dans un objet atomic
.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui contient une valeur de type Ty
.
Valeur de retour
Valeur récupérée stockée dans Atom
.
Notes
atomic_load
utilise implicitement le memory_order.memory_order_seq_cst
.
atomic_load_explicit
Récupère la valeur stockée dans un atomic
objet, dans un objet spécifié memory_order
.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui contient une valeur de type Ty
.
Order
memory_order
. N'utilisez pas memory_order_release
ou memory_order_acq_rel
.
Valeur de retour
Valeur récupérée stockée dans Atom
.
atomic_signal_fence
Agit comme une clôture , une primitive de synchronisation de mémoire qui applique l’ordre entre les opérations de chargement/magasin , entre d’autres clôtures dans un thread appelant qui ont des gestionnaires de signal qui sont exécutés dans le même thread.
inline void atomic_signal_fence(memory_order Order) noexcept;
Paramètres
Order
Contrainte d’ordre de mémoire qui détermine le type de délimitation.
Notes
L’argument Order
détermine le type de délimitation.
Valeur | Description |
---|---|
memory_order_relaxed |
La délimitation est sans effet. |
memory_order_consume |
La délimitation est une délimitation d’acquisition. |
memory_order_acquire |
La délimitation est une délimitation d’acquisition. |
memory_order_release |
La délimitation est une délimitation de libération. |
memory_order_acq_rel |
La délimitation est une délimitation d’acquisition et de libération. |
memory_order_seq_cst |
La délimitation est une délimitation d’acquisition et de libération, et est cohérente de manière séquentielle. |
atomic_store
Stocke atomiquement une valeur dans un atomic
objet.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui contient une valeur de type Ty
.
Value
Valeur de type Ty
.
Notes
atomic_store
stocke Value
dans l’objet pointé par Atom
, dans la memory_order.memory_order_seq_cst
contrainte.
atomic_store_explicit
Stocke atomiquement une valeur dans un atomic
objet.
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;
Paramètres
Atom
Pointeur vers un objet atomic
qui contient une valeur de type Ty
.
Value
Valeur de type Ty
.
Order
memory_order
. N’utilisez pas memory_order_consume
, memory_order_acquire
ou memory_order_acq_rel
.
Notes
atomic_store
stocke Value
dans l’objet désigné par Atom
, en respectant le memory_order
spécifié par Order
.
atomic_thread_fence
Agit comme une clôture , une primitive de synchronisation de mémoire qui applique l’ordre entre les opérations de chargement/magasin, sans opération atomique associée.
inline void atomic_thread_fence(memory_order Order) noexcept;
Paramètres
Order
Contrainte d’ordre de mémoire qui détermine le type de délimitation.
Notes
L’argument Order
détermine le type de délimitation.
Valeur | Description |
---|---|
memory_order_relaxed |
La délimitation est sans effet. |
memory_order_consume |
La délimitation est une délimitation d’acquisition. |
memory_order_acquire |
La délimitation est une délimitation d’acquisition. |
memory_order_release |
La délimitation est une délimitation de libération. |
memory_order_acq_rel |
La délimitation est une délimitation d’acquisition et de libération. |
memory_order_seq_cst |
La délimitation est une délimitation d’acquisition et de libération, et est cohérente de manière séquentielle. |
kill_dependency
Supprime une dépendance.
template <class Ty>
Ty kill_dependency(Ty Arg) noexcept;
Paramètres
Arg
Valeur de type Ty
.
Valeur de retour
La valeur de retour est Arg
. L’évaluation de Arg
ne comprend pas de dépendance à l’appel de fonction. En arrêtant une chaîne de dépendance possible, la fonction peut permettre au compilateur de générer du code plus efficace.