Estrutura atomic
Descreve um objeto que executa operações atômicas em um valor armazenado de tipo Ty.
template <class Ty>
struct atomic;
Membros
Construtores Públicos
Nome |
Descrição |
---|---|
Constrói um objeto atômico. |
Operadores Públicos
Nome |
Descrição |
---|---|
Lê e retorna o valor armazenado. (Método atomic::load) |
|
Usa um valor especificado para substituir o valor armazenado. (Método atomic::store) |
|
Aumenta o valor armazenado. Usado somente por especializações integrais e de ponteiro. |
|
Adiciona um valor especificado ao valor armazenado. Usado somente por especializações integrais e de ponteiro. |
|
Diminui o valor armazenado. Usado somente por especializações integrais e de ponteiro. |
|
Subtrai um valor especificado do valor armazenado. Usado somente por especializações integrais e de ponteiro. |
|
Executa and bit a bit em um valor especificado e o valor armazenado. Usado somente por especializações integrais. |
|
Executa or bit a bit em um valor especificado e o valor armazenado. Usado somente por especializações integrais. |
|
Executa exclusive or bit a bit em um valor especificado e o valor armazenado. Usado somente por especializações integrais. |
Métodos Públicos
Nome |
Descrição |
---|---|
Executa uma operação atomic_compare_and_exchange em this e retorna o resultado. |
|
Executa uma weak_atomic_compare_and_exchange operação em this e retorna o resultado. |
|
Adiciona um valor especificado ao valor armazenado. |
|
Executa and bit a bit em um valor especificado e o valor armazenado. |
|
Executa or bit a bit em um valor especificado e o valor armazenado. |
|
Subtrai um valor especificado do valor armazenado. |
|
Executa exclusive or bit a bit em um valor especificado e o valor armazenado. |
|
Especifica se as operações atômicas em this são livre de bloqueio. Um tipo atômico será livre de bloqueio se nenhuma operação atômica nesse tipo usar bloqueios. |
|
Lê e retorna o valor armazenado. |
|
Usa um valor especificado para substituir o valor armazenado. |
Comentários
O tipo Ty deve ser trivialmente copiável. Ou seja, o uso de memcpy para copiar bytes deve gerar um objeto Ty válido que compare igual ao objeto original. As funções de membro compare_exchange_weak e compare_exchange_strong usam memcmp para determinar se dois valores Ty são iguais. Essas funções não usarão um operator== definido por Ty. As funções membro de atomic usam memcpy para copiar valores do tipo Ty.
Uma especialização parcial, atomic<Ty *>, existe para todos os tipos de ponteiro. A especialização permite a adição de um deslocamento ao valor de ponteiro gerenciado ou à subtração de um deslocamento dela. As operações aritméticas usam um argumento de tipo ptrdiff_t e ajustam esse argumento de acordo com o tamanho de Ty para que fique consistente com a aritmética de endereço comum.
Existe uma especialização para cada tipo integral, exceto bool. Cada especialização fornece um vasto conjunto de métodos para operações aritméticas e lógicas atômicas.
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> |
As especializações integrais são derivadas dos tipos de **atomic_**integral. Por exemplo, atomic<unsigned int> é derivado de atomic_uint.
Requisitos
Cabeçalho: atômico
std de Namespace: