Sistema de gestão ELIGO

O que é um erro de deadlock?

ELIGO.FAQ-128049
Deadlock (interbloqueio, blocagem, impasse), refere-se a uma situação em que ocorre um impasse, onde dois ou mais processos ficam impedidos de continuar suas execuções porque estão esperando uns pelos outros.

Normalmente o deadlock ocorre com recursos, tais como dispositivos, arquivos, registros de um banco de dados, memória etc.

Suponha que uma empresa tenha vários vendedores e vários pontos de venda ou caixas. O vendedor A vendeu 1 martelo e 1 furadeira. O sistema, então, solicita o travamento do registro da tabela "ESTOQUE", que contém o total de martelos em estoque e, em seguida, solicita o travamento do registro que contém o total de furadeiras em estoque. De posse da exclusividade de acesso aos dois registros, ele lê a quantidade de martelos, subtrai 1 e escreve de novo no registro; o mesmo ocorre com relação ao registro de furadeiras. Observe, no entanto, que existem diversos caixas operando simultaneamente, de forma que, se algum outro caixa, naquele exato instante, estiver vendendo uma furadeira, ele ficará aguardando a liberação do registro das furadeiras para depois alterá-lo. Note que ele só altera os registros depois que for dada exclusividade para ele de TODOS os recursos que ele precisa, ou seja, de todos os registros. Suponha agora que, em outro caixa, foram vendidos 1 furadeira e 1 martelo e que o outro caixa solicitou o travamento do registro com a quantidade de furadeiras e agora quer o acesso ao de martelos; no entanto o registro de martelos está travado para o primeiro caixa. Nenhum deles devolve o recurso (registro) sobre o qual tem exclusividade e também não consegue acesso ao outro registro que falta para terminar a operação. Isto é um deadlock.

Erros de deadlock não podem ser totalmente evitados. Eles são uma consequência natural de processos transacionais que precisam acessar/alterar vários recursos sem a interferência de outros processos até a sua conclusão.