Condição de corrida

Uma condição de corrida ocorre quando um programa de software depende do momento em que um ou mais processos são executados para funcionar corretamente. Se uma thread for executada ou terminar em um momento inesperado, isso poderá causar um comportamento imprevisível, como uma saída incorreta ou um deadlock do programa.

A maioria dos programas de software é multithread, o que significa que pode processar várias threads ao mesmo tempo. Um aplicativo bem programado garantirá que os resultados de cada thread sejam processados na ordem esperada. Se um programa depender de threads executadas em uma sequência imprevisível, poderá ocorrer uma condição de corrida.

Um exemplo simples é uma porta lógica que processa valores booleanos. A porta lógica AND tem duas entradas e uma saída. Se as entradas A e B forem verdadeiras, a porta AND produzirá TRUE. Se uma ou ambas as entradas forem falsas, ela produzirá FALSE. Uma condição de corrida poderá ocorrer se um programa verificar o resultado da porta lógica antes que as variáveis A e B sejam carregadas. O processo correto seria:

  1. Carregar a variável A
  2. Carregar a variável B
  3. Verificar o resultado da porta lógica AND

Uma sequência incorreta seria:

  1. Carregar a variável A
  2. Verificar o resultado da porta lógica AND
  3. Carregar a variável B

O resultado do segundo exemplo acima pode ou não ser igual ao do primeiro exemplo. Por exemplo, a variável B pode ser FALSE antes e depois de ser carregada, o que não mudaria o resultado. Se A for FALSE, não importa se B é TRUE ou FALSE. No entanto, se A e B forem verdadeiras, o resultado deverá ser TRUE. Carregar a variável B depois de verificar o resultado da porta lógica produziria um resultado incorreto de FALSE.

A saída inconsistente produzida por condições de corrida pode causar bugs difíceis de detectar. Os programadores podem evitar esses problemas garantindo que as threads sejam processadas em uma sequência consistente.

Atualizado January 24, 2020 por Per C.

quizTeste seus conhecimentos

Which API helps applications communicate with multiple types of databases?

A
DirectX
0%
B
ODBC
0%
C
Winsock
0%
D
TWAIN
0%
Correct! Incorrect!     View the ODBC definition.
More Quizzes →

O dicionário de informática Tech Terms

A definição de Condição de corrida nesta página é uma definição original escrita pelos autores do TechTerms.com. Se você quiser fazer referência a esta página ou citar esta definição, use a barra de citação verde logo abaixo da definição.

Nosso objetivo é explicar a terminologia de informática de um jeito fácil de entender. Buscamos precisão e clareza em cada definição que publicamos. Se você tiver comentários sobre esta definição ou quiser sugerir um novo termo técnico, entre em contato.

A newsletter do Tech Terms

Amplie seus conhecimentos técnicos com nossa newsletter diária ou semanal! Assine hoje e receba novos termos e quizzes na sua caixa de entrada.

Assine a newsletter gratuita do TechTerms

Com que frequência você gostaria de receber um e-mail?

Você pode cancelar a assinatura ou alterar a frequência a qualquer momento usando os links disponíveis em cada e-mail. Dúvidas? Entre em contato.

Observação: a newsletter é enviada em inglês.