ExpertiDict

C++ · Intermediário · Inglês · Técnico

std atomic

ˌɛs.tiː.ˈdiː əˈtɑː.mɪksubstantivo

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

Veja também

Todos os termos de C++