metodo atomic::compare_exchange_weak

Esegue un confronto atomico debole e scambio l'operazione in *this.

bool compare_exchange_weak(
   Ty& Exp,
   Ty Value,
   memory_order Order1,
   memory_order Order2
) volatile _NOEXCEPT;
bool compare_exchange_weak(
   Ty& Exp,
   Ty Value,
   memory_order Order1,
   memory_order Order2
) _NOEXCEPT;
bool compare_exchange_weak(
   Ty& Exp,
   Ty Value,
   memory_order Order1 = memory_order_seq_cst
) volatile _NOEXCEPT;
bool compare_exchange_weak(
   Ty& Exp,
   Ty Value,
   memory_order Order1 = memory_order_seq_cst
) _NOEXCEPT;

Parametri

  • Exp
    Valore di tipo Ty.

  • Value
    Valore di tipo Ty.

  • Order1
    Primo argomento memory_order.

  • Order2
    Secondo argomento memory_order.

Valore restituito

bool che indica il risultato del confronto di valore.

Note

Questo seguito vengono confrontate e l'operazione di scambio confronta il valore memorizzato in *this con Exp.Se i valori sono uguali, l'operazione sostituisce il valore memorizzato in *this con Val tramite un'operazione read-modify-write e applicazione di vincoli ordine di memoria specificate da Order1.Se i valori non sono uguali, l'operazione utilizza il valore memorizzato in *this per sostituire Exp e applica i vincoli di ordine di memoria specificate da Order2.

Un atomico debole confronta e l'operazione di scambio esegue uno scambio se i valori confrontati sono uguali.Se i valori non sono uguali, l'operazione non è garantito per eseguire uno scambio.

Overload di che non hanno un utilizzo memory_order di secondo Order2 implicito basato sul valore Order1.Se la proprietà Order1 è memory_order_acq_rel, la proprietà Order2 è memory_order_acquire.Se la proprietà Order1 è memory_order_release, la proprietà Order2 è memory_order_relaxed.In tutti gli altri casi, Order2 è uguale a Order1.

Per gli overload che accettano due parametri memory_order, il valore Order2 non deve essere memory_order_release o memory_order_acq_rele non deve essere più sicura del valore Order1.

Requisiti

intestazione: atomico

Spazio dei nomi: deviazione standard

Vedere anche

Riferimenti

funzione atomic_compare_exchange_weak_explicit

struttura atomica

<atomic>

memory_order