JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

¿Qué es un deadlock o interbloqueo?

Cuando se trabaja en programación paralela o multisubproceso, una palabra que sale a colación cada dos por tres es "deadlock" (o un "interbloqueo" en castellano). Muchos porgramadores principiantes tienen dudas sobre qué son y cómo se pueden producir, por lo que, a raíz de la pregunta de un alumno de mi curso de fundamentos de C# y .NET, me he decidido a escribir algo que lo explique de manera simple pero efectiva. Un deadlock, es una situación difícil de reproducir, y se dará sólo en algunas circunstancias muy concretas, por eso son situaciones muy difíciles de prever y de depurar. Un ejemplo clásico de interbloqueo es el de una cuenta bancaria. Consideremos el caso de una clase para transferir dinero entre cuentas bancarias, algo así: class Cuenta { double saldo; void Retirar(double cantidad) { saldo -= cantidad; } void Ingresar(double cantidad) { saldo += cantidad; } void Transferir(Cuenta cuentaOr... [Más]