Aracılığıyla paylaş


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

Ayrıca bkz.

Başvuru

atomic_compare_exchange_strong_explicit işlevi

Atomik yapısı

<atomic>

memory_order