Libreria C ++ - <atomico>
introduzione
È un oggetto di tipo atomico che contiene un valore di un tipo particolare (T) e la caratteristica principale degli oggetti atomici è che l'accesso a questo valore contenuto da thread diversi non può causare gare di dati (cioè, farlo è un comportamento ben definito, con accessi opportunamente sequenziati). Generalmente, per tutti gli altri oggetti, la possibilità di provocare una corsa di dati per accedere allo stesso oggetto contemporaneamente qualifica l'operazione come comportamento indefinito.
Dichiarazione
Di seguito è riportata la dichiarazione per std :: atomic.
template <class T> struct atomic;
Parametri
T - È un tipo del valore contenuto.
Funzioni dei membri
Sr.No. | Funzioni e definizione dei membri |
---|---|
1 | (costruttore) È un costruisce un oggetto atomico |
2 | operatore = Memorizza un valore in un oggetto atomico |
3 | is_lock_free Controlla se l'oggetto atomico è privo di blocchi |
4 | negozio Sostituisce atomicamente il valore dell'oggetto atomico con un argomento non atomico |
5 | caricare Ottiene atomicamente il valore dell'oggetto atomico |
6 | operatore T Carica un valore da un oggetto atomico |
7 | scambio Sostituisce atomicamente il valore dell'oggetto atomico e ottiene il valore tenuto in precedenza |
8 | compare_exchange_weak e compare_exchange_strong Confronta atomicamente il valore dell'oggetto atomico con un argomento non atomico ed esegue lo scambio atomico se uguale o il carico atomico in caso contrario |
Operazioni supportate da determinate specializzazioni
Sr.No. | Operazioni e definizione |
---|---|
1 | fetch_add Aggiunge atomicamente l'argomento al valore memorizzato nell'oggetto atomico e ottiene il valore tenuto in precedenza |
2 | fetch_sub Sottrae atomicamente l'argomento dal valore memorizzato nell'oggetto atomico e ottiene il valore mantenuto in precedenza |
3 | fetch_and Esegue atomicamente AND bit per bit tra l'argomento e il valore dell'oggetto atomico e ottiene il valore tenuto in precedenza |
4 | fetch_or Esegue atomicamente l'OR bit per bit tra l'argomento e il valore dell'oggetto atomico e ottiene il valore tenuto in precedenza |
5 | fetch_xor Confronta atomicamente il valore dell'oggetto atomico con un argomento non atomico ed esegue lo scambio atomico se uguale o il carico atomico in caso contrario |
6 | operatore ++ Incrementa il valore atomico di uno |
7 | operatore-- Decrementa il valore atomico di uno |