Em computação, deadlock é um termo comum utilizado para descrever uma situação em que o processo A fica bloqueado pelo sistema operacional esperando por dados do processo B, ao mesmo tempo que processo B também fica bloqueado esperando por dados do processo. Na verdade podem ocorrer deadlocks mesmo que exista apenas 1 processo envolvido, neste caso as trheads do processo podem estar em deadlock.

O deadlock pode ocorrer em vários níveis, com bem mais do que apenas 2 processos envolvidos. É possível que vários processos esperem por outros em cadeia, sendo algum processo da cadeia espera por dados do processo que iniciou a cadeia. Por estes e outros motivos detectar um deadlock é uma tarefa de alta complexidade, geralmente NÃO implementada pelos sistemas operacionais. Em sistemas de banco de dados o deadlock também é bastante comum e vários fatores devem ser considerados para minimizar a ocorrência dos mesmos.

Não entraremos muito em detalhes sobre como tratar ou minimizar a ocorrência deadlocks. A imagem abaixo é um exemplo de deadlock na vida real. E cada vez mais real no trânsito louco das cidades grandes.

Deadlock na vida real

Deadlock na vida real

Esta foto foi tirada no cruzamento da avenida Amazonas com Contorno, em um segunda-feira chuvosa em Belo Horizonte. Observe que deadlock perfeito. Até parece que foi combinado!

Possivelmente os semáforos (os do trânsito) não estavam funcionando. Em breve será publicado um novo artigo sobre “o que são semáforos”, no contexto da Ciência da Computação.

Deixe um comentário

  • (não será divulgado)