Partilhar via


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

Construtor atomic::atomic

Constrói um objeto atômico.

Operadores Públicos

Nome

Descrição

Operador atomic::operator Ty

Lê e retorna o valor armazenado. (Método atomic::load)

Operador atomic::operator=

Usa um valor especificado para substituir o valor armazenado. (Método atomic::store)

Operador atomic::operator++

Aumenta o valor armazenado. Usado somente por especializações integrais e de ponteiro.

Operador atomic::operator+=

Adiciona um valor especificado ao valor armazenado. Usado somente por especializações integrais e de ponteiro.

Operador atomic::operator--

Diminui o valor armazenado. Usado somente por especializações integrais e de ponteiro.

Operador atomic::operator-=

Subtrai um valor especificado do valor armazenado. Usado somente por especializações integrais e de ponteiro.

Operador atomic::operator&=

Executa and bit a bit em um valor especificado e o valor armazenado. Usado somente por especializações integrais.

Operador atomic::operator|=

Executa or bit a bit em um valor especificado e o valor armazenado. Usado somente por especializações integrais.

Operador atomic::operator^=

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

Método atomic::compare_exchange_strong

Executa uma operação atomic_compare_and_exchange em this e retorna o resultado.

Método atomic::compare_exchange_weak

Executa uma weak_atomic_compare_and_exchange operação em this e retorna o resultado.

Método atomic::fetch_add

Adiciona um valor especificado ao valor armazenado.

Método atomic::fetch_and

Executa and bit a bit em um valor especificado e o valor armazenado.

Método atomic::fetch_or

Executa or bit a bit em um valor especificado e o valor armazenado.

Método atomic::fetch_sub

Subtrai um valor especificado do valor armazenado.

Método atomic::fetch_xor

Executa exclusive or bit a bit em um valor especificado e o valor armazenado.

Método atomic::is_lock_free

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.

Método atomic::load

Lê e retorna o valor armazenado.

Método atomic::store

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:

Consulte também

Referência

<atomic>

Outros recursos

Arquivos de cabeçalho da Biblioteca Padrão C++