Libreria C ++ - <atomico>
introduzione
Questi sono tipi che incapsulano un valore il cui accesso è garantito per non causare gare di dati e possono essere utilizzati per sincronizzare gli accessi alla memoria tra thread diversi e la libreria atomica fornisce componenti per operazioni atomiche a grana fine consentendo una programmazione simultanea senza blocchi. Ogni operazione atomica è indivisibile rispetto a qualsiasi altra operazione atomica che coinvolge lo stesso oggetto.
Tipo atomico
Sr.No. | Tipi di membri e definizione |
---|---|
1 | atomico Modello di classe atomica e specializzazioni per i tipi bool, integrale e puntatore |
Tipi atomici in stile C.
I seguenti sono tipi atomici e anche definiti in questa intestazione.
atomiche per tipi integrali fondamentali .
Questi sono o typedef della corrispondente specializzazione completa di atomico modello di classe o una classe base di tale specializzazione.
atomics per integrali basati sulla larghezza (quelli definiti in<cinttypes>).
Ognuno di questi è un alias di uno degli atomici di cui sopra per i tipi integrali fondamentali o di una specializzazione completa diatomicomodello di classe con un tipo integrale esteso .
Dove N è uno in 8, 16, 32, 64 o qualsiasi altra larghezza di tipo supportata dalla libreria.
tipo contenuto | tipo atomico | descrizione |
---|---|---|
bool |
atomic_bool | |
char |
atomic_char | |
signed char |
atomic_schar | |
unsigned char |
atomic_uchar | |
short |
atomic_short | |
unsigned short |
atomic_ushort | |
int |
atomic_int | |
unsigned int |
atomic_uint | |
long |
atomic_long | |
unsigned long |
atomic_ulong | |
long long |
atomic_llong | |
unsigned long long |
atomic_ullong | |
wchar_t |
atomic_wchar_t | |
char16_t |
atomic_char16_t | |
char32_t |
atomic_char32_t | |
intmax_t | atomic_intmax_t | |
uintmax_t | atomic_uintmax_t | |
int_least N_t |
atomic_int_least N_t |
|
uint_least N_t |
atomic_uint_least N_t |
|
int_fast N_t |
atomic_int_fast N_t |
|
uint_fast N_t |
atomic_uint_fast N_t |
|
intptr_t | atomic_intptr_t | |
uintptr_t | atomic_uintptr_t | |
size_t | atomic_size_t | |
ptrdiff_t | atomic_ptrdiff_t |
Operazioni sui tipi atomici
&Sr.No. | Operazioni e definizione |
---|---|
1 | atomic_is_lock_free Viene utilizzato per verificare se le operazioni del tipo atomico sono prive di blocchi |
2 | atomic_store e atomic_store_explicit Sostituisce automaticamente il valore dell'oggetto atomico con un argomento non atomico |
3 | atomic_load e atomic_load_explicit Ottiene atomicamente il valore memorizzato in un oggetto atomico |
4 | atomic_exchange e atomic_exchange_explicit Sostituisce atomicamente il valore dell'oggetto atomico con un argomento non atomico e restituisce il vecchio valore dell'atomico |
5 | atomic_compare_exchange_weak & atomic_compare_exchange_weak_explicit & atomic_compare_exchange_strong & atomic_compare_exchange_strong_explicit 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 | atomic_fetch_add e atomic_fetch_add_explicit Aggiunge un valore non atomico a un oggetto atomico e ottiene il valore precedente dell'atomico |
7 | atomic_fetch_sub e atomic_fetch_sub_explicit Sottrae un valore non atomico da un oggetto atomico e ottiene il valore precedente dell'atomico |
8 | atomic_fetch_and & atomic_fetch_and_explicit Sostituisce l'oggetto atomico con il risultato di AND logico con un argomento non atomico e ottiene il valore precedente dell'atomico |
9 | atomic_fetch_or & atomic_fetch_or_explicit Sostituisce l'oggetto atomico con il risultato di OR logico con un argomento non atomico e ottiene il valore precedente dell'atomico |
10 | atomic_fetch_xor e atomic_fetch_xor_explicit Sostituisce l'oggetto atomico con il risultato di XOR logico con un argomento non atomico e ottiene il valore precedente dell'atomico |
Tipo di flag e operazioni
Sr.No. | Tipo di flag e definizione |
---|---|
1 | atomic_flag Il tipo atomico booleano senza blocco |
2 | atomic_flag_test_and_set & atomic_flag_test_and_set_explicit Imposta atomicamente il flag su true e restituisce il valore precedente |
3 | atomic_flag_clear e atomic_flag_clear_explicit Imposta atomicamente il valore del flag su false |