C++ · Intermediário · Inglês · Técnico
std atomic
Modelo de tipo que torna leituras e escritas indivisíveis entre threads, como atomic<int>. Operações como ++ e fetch_add acontecem de forma atômica, sem mutex.
Onde usar
Usado em contadores, flags de parada e estruturas sem lock. Em review, pergunta-se se a ordem de memória escolhida é a correta; o padrão seq_cst é o mais seguro.
Em código
std::atomic<int> n{0};
std::atomic<bool> parar{false};
void w() {
while (!parar) ++n; // seguro
}
// em outra thread: parar = true;Exemplos
Make the counter an atomic instead of locking.
Faça o contador um atomic em vez de usar lock.
Atomic doesn't make two variables change together.
Atomic não faz duas variáveis mudarem juntas.
Cuidado
Atômico protege uma variável, não uma invariante entre várias; dois atomics separados não ficam consistentes entre si.
Sinônimos
variável atômica