ExpertiDict

C · Avançado · Português · Técnico

tipo atômico

/ˈtʃi.pu a.ˈto.mi.ku/substantivo

Tipo declarado com _Atomic ou pelos nomes de stdatomic.h, como atomic_int, cujas operações são indivisíveis entre threads, evitando data race sem mutex em casos simples.

Onde usar

Usado em contadores, flags de parada e estruturas lock-free. Cada operação como atomic_fetch_add é indivisível, mas várias operações em sequência não são atômicas em conjunto.

Em código

#include <stdatomic.h>
atomic_int contador;
void conta(void) {
  atomic_fetch_add(&contador, 1);
}
int ler(void) {
  return atomic_load(&contador);
}

Exemplos

Trocou o contador por um atomic_int e o mutex deixou de ser necessário.

Cada operação é atômica, mas a sequência de duas não é.

Cuidado

Supor que ler e depois escrever com duas operações atômicas separadas seja atômico; use fetch_add ou compare_exchange.

Sinônimos

atomic

Veja também

Todos os termos de C