atomic::compare_exchange_strong yöntemi
Gerçekleştiren bir Atomik karşılaştırma ve exchange üzerinde işlem *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;
Parametreler
Exp
Türünde bir deðer Ty.Value
Türünde bir deðer Ty.Order1
İlk memory_order bağımsız değişkeni.Order2
İkinci memory_order bağımsız değişkeni.
Dönüş Değeri
A bool değer karşılaştırması sonucunu gösterir.
Notlar
Bu Atomik karşılaştırma ve exchange işlem içinde saklanan değeri karşılaştırır *this ile Exp.Değerleri aynıysa, işlem içinde saklanan değer değiştirir *this ile Val kullanarak bir read-modify-write işlem ve bellek uygulama tarafından belirtilen sınırlamalar sipariş Order1.Değerleri eşit değilse, işlem içinde saklanan değeri kullanır *this yerine Exp ve tarafından belirtilen bellek sipariş kısıtlamaları uygular Order2.
İkinci bir sahip olmayan aşırı memory_order bir örtük kullanmak Order2 değeri temel alarak Order1.If Order1 is memory_order_acq_rel, Order2 is memory_order_acquire.If Order1 is memory_order_release, Order2 is memory_order_relaxed.Diğer durumlarda Order2 eşittir Order1.
İki ele aşırı yükleme için memory_order parametreleri, değeri Order2 olmamalıdır memory_order_release veya memory_order_acq_relve değeri'den daha güçlü olmalı Order1.
Gereksinimler
Başlık: Atomik
Namespace: std