Condividi tramite


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

Costruttore atomic::atomic

Costruisce un oggetto atomico.

Operatori pubblici

Nome

Descrizione

Operatore atomic::operator Ty

Legge e restituisce il valore memorizzato. (Metodo atomic::load)

Operatore atomic::operator=

Utilizza un valore specificato per sostituire il valore memorizzato. (Metodo atomic::store)

Operatore atomic::operator++

Incrementa il valore memorizzato. Utilizzato solo dalle specializzazioni di puntatore e integrale.

Operatore atomic::operator+=

Aggiunge un valore specificato al valore archiviato. Utilizzato solo dalle specializzazioni di puntatore e integrale.

Operatore atomic::operator--

Decrementa il valore memorizzato. Utilizzato solo dalle specializzazioni di puntatore e integrale.

Operatore atomic::operator-=

Sottrae un valore specificato dal valore archiviato. Utilizzato solo dalle specializzazioni di puntatore e integrale.

Operatore atomic::operator&=

Esegue una and bit a bit tra il valore specificato e il valore archiviato. Utilizzato solo dalle specializzazioni integrali.

Operatore atomic::operator|=

Esegue una or bit a bit tra il valore specificato e il valore archiviato. Utilizzato solo dalle specializzazioni integrali.

Operatore atomic::operator^=

Esegue una exclusive or bit a bit tra il valore specificato e il valore archiviato. Utilizzato solo dalle specializzazioni integrali.

Metodi pubblici

Nome

Descrizione

Metodo atomic::compare_exchange_strong

Esegue un'operazione atomic_compare_and_exchange su this e restituisce il risultato.

Metodo atomic::compare_exchange_weak

Esegue un'operazione weak_atomic_compare_and_exchange su this e restituisce il risultato.

Metodo atomic::fetch_add

Aggiunge un valore specificato al valore archiviato.

Metodo atomic::fetch_and

Esegue una and bit a bit tra il valore specificato e il valore archiviato.

Metodo atomic::fetch_or

Esegue una or bit a bit tra il valore specificato e il valore archiviato.

Metodo atomic::fetch_sub

Sottrae un valore specificato dal valore archiviato.

Metodo atomic::fetch_xor

Esegue una exclusive or bit a bit tra il valore specificato e il valore archiviato.

Metodo atomic::is_lock_free

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.

Metodo atomic::load

Legge e restituisce il valore memorizzato.

Metodo atomic::store

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

Vedere anche

Riferimenti

<atomic>

Altre risorse

File di intestazione libreria standard C++