Exigência de corrida e impasse | Blog CloudxLab
Um bom sistema precisa prometer que a quesito de corrida e o impasse não ocorram. Neste post, vamos aprender sobre Race Condition e Deadlock.
O que é uma quesito de corrida?
Quando dois processos estão competindo entre si, causando devassidão de dados.
Conforme mostrado no diagrama, duas pessoas estão tentando depositar 1 dólar online na mesma conta bancária. O valor inicial é de 17 dólares. Ambas as pessoas seriam capazes de ver $ 17 inicialmente. Cada um deles tenta depositar $ 1, e espera-se que o valor final seja de $ 19. Mas devido às condições da corrida, o valor final no banco é de $ 18 em vez de $ 19. Isso também é divulgado porquê leitura suja.
Por exemplo, se dois processos/threads estiverem tentando executar as seguintes condições simultaneamente, eles causarão devassidão de dados:
Tópico 1:totalidade = num1 + num2
Tópico 2:totalidade = num1 - num2
É muito geral que as condições de corrida passem despercebidas durante os testes, mesmo depois vários testes e revisões de código. Mas na produção haveria muitos processos e threads trabalhando paralelamente e competindo pelos mesmos recursos, e esse problema ocorreria.
O que é um Bloqueio Morto?
Quando dois processos estão esperando um pelo outro direta ou indiretamente, é chamado de impasse.
Isso geralmente ocorre quando dois processos estão esperando por recursos compartilhados adquiridos por outros. Por exemplo, se a thread T1 adquiriu o recurso R1 e também precisa do recurso R2 para realizar sua tarefa. Mas o recurso R2 é adquirido pela thread T2 que está esperando pelo recurso R1 (que é adquirido por T1).
Uma vez que você pode ver no segundo diagrama, o processo 1 está aguardando o processo 2, o processo 2 está aguardando a desfecho do processo 3 e o processo 3 está aguardando a desfecho do processo 1. Todos esses três processos continuariam esperando e nunca terminariam. Isso é chamado de impasse.
Quer testar seus conhecimentos com MCQs? Sinta-se livre para visitar cá. Saiba mais sobre os Cursos da CloudxLab.