méthode d'atomic::compare_exchange_weak
Effectue un atomique faible comparent et échangent l'exécution sur *this.
bool compare_exchange_weak(
Ty& Exp,
Ty Value,
memory_order Order1,
memory_order Order2
) volatile _NOEXCEPT;
bool compare_exchange_weak(
Ty& Exp,
Ty Value,
memory_order Order1,
memory_order Order2
) _NOEXCEPT;
bool compare_exchange_weak(
Ty& Exp,
Ty Value,
memory_order Order1 = memory_order_seq_cst
) volatile _NOEXCEPT;
bool compare_exchange_weak(
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
Le second argument d' memory_order .
Valeur de retour
bool qui indique le résultat de la comparaison de valeur.
Notes
Cet atomique compare et d'échange l'exécution 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 à l'aide d'une exécution et d'appliquer d' read-modify-write les contraintes de commande de mémoire qui sont spécifiées par Order1.Si les valeurs ne sont pas égales, l'exécution utilise la valeur stockée dans *this pour remplacer Exp et applique les contraintes de commande de mémoire qui sont spécifiées par Order2.
Un atomique faible compare et l'exécution d'échange exécute un échange si les valeurs sont comparées égales.Si les valeurs ne sont pas égales, l'opération n'est pas garanti exécuter un échange.
Surcharges qui n'ont pas d'utilisation d' memory_order de seconde Order2 implicite qui est basée sur 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 d' memory_order , la valeur d' Order2 ne doit pas être memory_order_release ou memory_order_acq_rel, et ne doit pas être plus forte que la valeur d' Order1.
Configuration requise
en-tête : atomique
l'espace de noms : DST