atomic::compare_exchange_strong, méthode
Effectue une opération atomique de comparaison et d'échange sur *this.
bool compare_exchange_strong(
Ty& Exp,
Ty Value,
memory_order Order1,
memory_order Order2
) volatile _NOEXCEPT;
bool compare_exchange_strong(
Ty& Exp,
Ty Value,
memory_order Order1,
memory_order Order2
) _NOEXCEPT;
bool compare_exchange_strong(
Ty& Exp,
Ty Value,
memory_order Order1 = memory_order_seq_cst
) volatile _NOEXCEPT;
bool compare_exchange_strong(
Ty& Exp,
Ty Value,
memory_order Order1 = memory_order_seq_cst
) _NOEXCEPT;
Paramètres
Exp
Valeur de type Ty.Value
Valeur de type Ty.Order1
Premier argument de memory_order.Order2
Deuxième argument de memory_order.
Valeur de retour
Un bool qui indique le résultat de la comparaison de valeurs.
Notes
Cette opération atomique de comparaison et d'échange compare la valeur stockée dans *this avec Exp. Si les valeurs sont égales, l'opération remplace la valeur stockée dans *this avec Val en utilisant une opération de read-modify-write et en appliquant les contraintes d'ordre de la mémoire spécifiées par Order1. Si les valeurs ne sont pas égales, l'opération utilise la valeur stockée dans *this pour remplacer Exp et applique les contraintes d'ordre de mémoire spécifiées par Order2.
Surcharges qui n'ont pas de deuxième memory_order utilise un Order2 implicite qui dépend de la valeur d' Order1. Si Order1 est memory_order_acq_rel, Order2 est memory_order_acquire. Si Order1 est memory_order_release, Order2 est memory_order_relaxed. Dans tous les autres cas, Order2 est égal à Order1.
Pour les surcharges qui acceptent deux paramètres memory_order, la valeur d' Order2 ne doit pas être memory_order_release ni memory_order_acq_rel, et ne doit pas dépasser la valeur d' Order1.
Configuration requise
En-tête : atomique
Espace de noms : std