metodo atomic::compare_exchange_strong
Esegue un confronto in modalità atomica e scambio l'operazione in *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;
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.
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