Partager via


méthode d'atomic::compare_exchange_strong

Effectue une comparaison atomique et échangent l'exécution 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
    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.

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

Voir aussi

Référence

fonction atomic_compare_exchange_strong_explicit

structure atomique

<atomic>

memory_order