Condividi tramite


Funzione atomic_compare_exchange_weak_explicit

Esegue un'operazione di confronto e scambio atomico debole.

template <class Ty>
inline bool atomic_compare_exchange_weak_explicit(
   volatile atomic<Ty> *Atom,
   Ty *Exp,
   Ty Value,
   memory_order Order1,
   memory_order Order2
) _NOEXCEPT;
template <class Ty>
inline bool atomic_compare_exchange_weak_explicit(
   atomic<Ty> *Atom,
   Ty *Exp,
   Ty Value,
   memory_order Order1,
   memory_order Order2
) _NOEXCEPT;

Parametri

  • Atom
    Puntatore a un oggetto atomic che include un valore di tipo Ty.

  • Exp
    Un puntatore a un valore di tipo Ty.

  • Value
    Valore di tipo Ty.

  • Order1
    Primo argomento di memory_order.

  • Order2
    Secondo argomento di memory_order. Il valore di Order2 non può essere memory_order_release o memory_order_acq_rel, né può essere più forte del valore di Order1.

Valore restituito

Un bool che indica il risultato del confronto del valore.

Note

Un confronto e scambio atomico debole confronta il valore archiviato nell'oggetto a cui fa riferimento Atom con il valore a cui fa riferimento Exp. Se i valori sono uguali, l'operazione sostituisce il valore archiviato nell'oggetto a cui fa riferimento Atom con Val utilizzando un'operazione di read-modify-write e applicando i vincoli di ordine di memoria specificati da Order1. Se i valori non sono uguali, l'operazione sostituisce il valore a cui fa riferimento Exp con il valore memorizzato nell'oggetto a cui fa riferimento Atom e applica i vincoli di ordine di memoria specificato da Order2.

Un'operazione di confronto e scambio atomico debole esegue uno scambio se i valori confrontati sono uguali. Tuttavia, se i valori non sono uguali, non è garantito che l'operazione esegua uno scambio.

Requisiti

Intestazione: atomico

Spazio dei nomi: std

Vedere anche

Riferimenti

<atomic>

Struttura atomic