Un bloqueo se produce cuando un proceso está esperando algo que nunca se cumple.
Ejemplo:
Cuando dos procesos P0 y P1 quieren tener acceso simultaneamente a dos recursos r0 y r1, es posible que se produzca un bloqueo de ambos procesos. Si P0 accede con exito a r1 y P1 accede con exito a r0, ambos se quedan atrapados intentando tener acceso al otro recurso.
Cuatro condiciones se tienen que cumplir para que sea posible que se produzca un bloqueo entre procesos:
Un problema adicional con los bloqueos es que es posible que el programa siga funcionando correctamente según la definición, es decir, el resultado obtenido es el resultado deseado, aún cuando algunos de sus procesos están bloqueados durante la ejecución (es decir, se produjo solamente un bloque parcial).
Existen algunas técnicas que se pueden usar para que no se produzcan bloqueos: