ExpertiDict

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

data race

ˈdeɪ.tə ɹeɪssubstantivo

Acesso simultâneo de duas threads ao mesmo local de memória, em que ao menos um é escrita e não há sincronização. Em C++ isso é comportamento indefinido.

Onde usar

Aparece como resultados que mudam a cada execução ou travamentos raros em produção. Ferramentas como o ThreadSanitizer ajudam a achar.

Em código

int n = 0;
auto f = [&] {
  for (int i = 0; i < 9; ++i) ++n;
};
std::thread a(f), b(f);
a.join(); b.join();  // data race em n

Exemplos

ThreadSanitizer found a data race on this counter.

O ThreadSanitizer achou um data race nesse contador.

Two threads write to the vector, that's a data race.

Duas threads escrevem no vector, isso é data race.

Cuidado

Não é o mesmo que race condition: data race é um defeito de memória definido pelo padrão, enquanto race condition é um erro de lógica ligado ao tempo.

Sinônimos

corrida de dados

Veja também

Todos os termos de C++