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