Struttura atomic
Viene descritto un oggetto che esegue le operazioni atomiche su un valore archiviato di tipo Ty.
template <class Ty>
struct atomic;
Membri
Costruttori pubblici
Nome |
Descrizione |
---|---|
Costruisce un oggetto atomico. |
Operatori pubblici
Nome |
Descrizione |
---|---|
Legge e restituisce il valore memorizzato. (Metodo atomic::load) |
|
Utilizza un valore specificato per sostituire il valore memorizzato. (Metodo atomic::store) |
|
Incrementa il valore memorizzato. Utilizzato solo dalle specializzazioni di puntatore e integrale. |
|
Aggiunge un valore specificato al valore archiviato. Utilizzato solo dalle specializzazioni di puntatore e integrale. |
|
Decrementa il valore memorizzato. Utilizzato solo dalle specializzazioni di puntatore e integrale. |
|
Sottrae un valore specificato dal valore archiviato. Utilizzato solo dalle specializzazioni di puntatore e integrale. |
|
Esegue una and bit a bit tra il valore specificato e il valore archiviato. Utilizzato solo dalle specializzazioni integrali. |
|
Esegue una or bit a bit tra il valore specificato e il valore archiviato. Utilizzato solo dalle specializzazioni integrali. |
|
Esegue una exclusive or bit a bit tra il valore specificato e il valore archiviato. Utilizzato solo dalle specializzazioni integrali. |
Metodi pubblici
Nome |
Descrizione |
---|---|
Esegue un'operazione atomic_compare_and_exchange su this e restituisce il risultato. |
|
Esegue un'operazione weak_atomic_compare_and_exchange su this e restituisce il risultato. |
|
Aggiunge un valore specificato al valore archiviato. |
|
Esegue una and bit a bit tra il valore specificato e il valore archiviato. |
|
Esegue una or bit a bit tra il valore specificato e il valore archiviato. |
|
Sottrae un valore specificato dal valore archiviato. |
|
Esegue una exclusive or bit a bit tra il valore specificato e il valore archiviato. |
|
Specifica se le operazioni atomiche su this sono libere dal blocco. Un tipo atomico è libero dal blocco se nessuna operazione atomica su quel tipo utilizza i blocchi. |
|
Legge e restituisce il valore memorizzato. |
|
Utilizza un valore specificato per sostituire il valore memorizzato. |
Note
Il tipo Ty deve essere copiabile in modo semplice. Ovvero, utilizzando memcpy per copiare i suoi byte deve produrre un oggetto Ty valido che si confronta in modo identico all'oggetto originale. Le funzioni membro compare_exchange_strong e compare_exchange_weak utilizzano memcmp per determinare se due valori Ty sono uguali. Queste funzioni non utilizzeranno un Ty-definito operator==. Le funzioni membro atomic utilizzano memcpy per copiare i valori di tipo Ty.
Una specializzazione parziale, atomic<Ty *>, esiste per tutti i tipi di puntatore. La specializzazione consente l'aggiunta di un offset al valore del puntatore gestito o la sottrazione di un offset da esso. Le operazioni aritmetiche accettano un argomento di tipo ptrdiff_t e adattano l'argomento a seconda della dimensione di Ty per essere consistente con l'ordinaria aritmetica degli indirizzi.
Una specializzazione esiste per ogni tipo integrale tranne bool. Ogni specializzazione fornisce un insieme completo dei metodi per aritmetica atomica e le operazioni logiche.
atomic<char> |
atomic<signed char> |
atomic<unsigned char> |
atomic<char16_t> |
atomic<char32_t> |
atomic<wchar_t> |
atomic<short> |
atomic<unsigned short> |
atomic<int> |
atomic<unsigned int> |
atomic<long> |
atomic<unsigned long> |
atomic<long long> |
atomic<unsigned long long> |
Le specializzazioni integrali sono derivate dai tipi corrispondenti **atomic_**integral. L'interfaccia atomic<unsigned int> deriva, ad esempio, dall'interfaccia atomic_uint.
Requisiti
Intestazione: atomico
Spazio dei nomi: std