Sdílet prostřednictvím


Metoda Atomic::compare_exchange_strong

Provede atomovou porovnat a exchange operace na *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;

Parametry

  • Exp
    Hodnota typu Ty.

  • Value
    Hodnota typu Ty.

  • Order1
    První memory_order argument.

  • Order2
    Druhý memory_order argument.

Vrácená hodnota

A bool označuje výsledek porovnání hodnoty.

Poznámky

Tato atomovou porovnat a exchange operace porovná hodnotu uloženou v *this s Exp.Pokud jsou hodnoty stejné, operace nahradí hodnotu uloženou v *this s Val pomocí read-modify-write operace a použití paměti objednávky omezení, které jsou určeny Order1.Pokud hodnoty nejsou shodné, operace použije hodnotu uloženou v *this nahradit Exp a použije pořadí omezení paměti, které jsou určeny Order2.

Přetížení, které nemají druhý memory_order slouží implicitní Order2 založené na hodnotě Order1.If Order1 is memory_order_acq_rel, Order2 is memory_order_acquire.If Order1 is memory_order_release, Order2 is memory_order_relaxed.Ve všech ostatních případech Order2 se rovná Order1.

Pro přetížení, které dvě memory_order parametry, hodnoty Order2 nesmí být memory_order_release nebo memory_order_acq_rela nesmí být silnější než hodnota Order1.

Požadavky

Záhlaví: atomovou

Obor názvů: std

Viz také

Referenční dokumentace

Funkce atomic_compare_exchange_strong_explicit

atomovou strukturu

<atomic>

memory_order