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