Biblioteca C ++ - <atomic>
Introdução
É um objeto de tipos atômicos que contém um valor de um tipo particular (T) e a principal característica dos objetos atômicos é que o acesso a este valor contido de diferentes threads não pode causar corridas de dados (ou seja, fazer isso é um comportamento bem definido, com acessos devidamente sequenciados). Geralmente, para todos os outros objetos, a possibilidade de causar uma corrida de dados para acessar o mesmo objeto simultaneamente qualifica a operação como um comportamento indefinido.
Declaração
A seguir está a declaração para std :: atomic.
template <class T> struct atomic;
Parâmetros
T - É um tipo de valor contido.
Funções de membro
| Sr. Não. | Funções e definição dos membros |
|---|---|
| 1 | (construtor) É um constrói um objeto atômico |
| 2 | operador = Ele armazena um valor em um objeto atômico |
| 3 | is_lock_free Ele verifica se o objeto atômico está livre de bloqueio |
| 4 | loja Ele substitui atomicamente o valor do objeto atômico por um argumento não atômico |
| 5 | carga Ele obtém atomicamente o valor do objeto atômico |
| 6 | operador T Ele carrega um valor de um objeto atômico |
| 7 | troca Ele substitui atomicamente o valor do objeto atômico e obtém o valor anteriormente mantido |
| 8 | compare_exchange_weak & compare_exchange_strong 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 |
Operações apoiadas por certas especializações
| Sr. Não. | Operações e Definição |
|---|---|
| 1 | fetch_add Ele adiciona atomicamente o argumento ao valor armazenado no objeto atômico e obtém o valor mantido anteriormente |
| 2 | fetch_sub Ele subtrai atomicamente o argumento do valor armazenado no objeto atômico e obtém o valor mantido anteriormente |
| 3 | fetch_and Ele executa atomicamente AND bit a bit entre o argumento e o valor do objeto atômico e obtém o valor mantido anteriormente |
| 4 | fetch_or Ele executa atomicamente OR bit a bit entre o argumento e o valor do objeto atômico e obtém o valor mantido anteriormente |
| 5 | fetch_xor 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 | operador ++ Ele aumenta o valor atômico em um |
| 7 | operador-- Ele diminui o valor atômico em um |