C · Avançado · Português · Técnico
tipo atômico
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