Biblioteca C ++ - <atomic>
Introdução
Esses são tipos que encapsulam um valor cujo acesso é garantido para não causar disputas de dados e podem ser usados para sincronizar acessos de memória entre diferentes threads e a biblioteca atômica fornece componentes para operações atômicas de granulação fina, permitindo a programação simultânea sem bloqueio. Cada operação atômica é indivisível em relação a qualquer outra operação atômica que envolva o mesmo objeto.
Tipo atômico
Sr. Não. | Tipos e definição de membros |
---|---|
1 | atômico Modelo de classe atômica e especializações para tipos bool, integral e ponteiro |
Tipos atômicos estilo C
A seguir estão os tipos atômicos e também definidos neste cabeçalho.
atômica para tipos integrais fundamentais .
Esses são typedefs da especialização completa correspondente do atômico modelo de classe ou uma classe base de tal especialização.
atômicos para integrais baseados em largura (aqueles definidos em<cinttypes>)
Cada um deles é um alias de um dos atômicos acima para tipos integrais fundamentais ou de uma especialização completa doatômicomodelo de classe com um tipo integral estendido .
Onde N é um em 8, 16, 32, 64 ou qualquer outro tipo de largura suportado pela biblioteca.
tipo contido | tipo atômico | descrição |
---|---|---|
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 |
Operações em tipos atômicos
ESr. Não. | Operações e Definição |
---|---|
1 | atomic_is_lock_free É usado para verificar se as operações do tipo atômico estão livres de bloqueio |
2 | atomic_store e atomic_store_explicit Ele substitui automaticamente o valor do objeto atômico por um argumento não atômico |
3 | atomic_load & atomic_load_explicit Ele obtém atomicamente o valor armazenado em um objeto atômico |
4 | atomic_exchange & atomic_exchange_explicit Ele substitui atomicamente o valor do objeto atômico por um argumento não atômico e retorna o valor antigo do objeto atômico |
5 | atomic_compare_exchange_weak & atomic_compare_exchange_weak_explicit & atomic_compare_exchange_strong & atomic_compare_exchange_strong_explicit Ele compara atomicamente o valor do objeto atômico com o argumento não atômico e realiza a troca atômica se for igual ou carga atômica se não |
6 | atomic_fetch_add & atomic_fetch_add_explicit Ele adiciona um valor não atômico a um objeto atômico e obtém o valor anterior do atômico |
7 | atomic_fetch_sub & atomic_fetch_sub_explicit Ele subtrai um valor não atômico de um objeto atômico e obtém o valor anterior do atômico |
8 | atomic_fetch_and & atomic_fetch_and_explicit Ele substitui o objeto atômico com o resultado de AND lógico por um argumento não atômico e obtém o valor anterior do atômico |
9 | atomic_fetch_or & atomic_fetch_or_explicit Ele substitui o objeto atômico com o resultado do OR lógico por um argumento não atômico e obtém o valor anterior do atômico |
10 | atomic_fetch_xor & atomic_fetch_xor_explicit Ele substitui o objeto atômico com o resultado do XOR lógico por um argumento não atômico e obtém o valor anterior do atômico |
Tipo de bandeira e operações
Sr. Não. | Tipo de bandeira e definição |
---|---|
1 | atomic_flag O tipo atômico booleano sem bloqueio |
2 | atomic_flag_test_and_set & atomic_flag_test_and_set_explicit Ele define atomicamente o sinalizador como verdadeiro e retorna seu valor anterior |
3 | atomic_flag_clear & atomic_flag_clear_explicit Ele define atomicamente o valor do sinalizador como falso |