Un bloqueo se produce cuando un proceso está esperando a 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 aloca con exito r1 y P1 aloca con exito r0, ambos se quedan atrapados intendando tener acceso al otro recurso.
Cuatro condiciones se tienen que cumplir para que sea posible que se produce un bloqueo entre procesos:
Un problema adicional con los bloqueos es que es posible que el programa siga funcionando correcto según la definición, es decir, el resultado obtenido es el resultado deseado, aún unos de sus procesos están bloqueados durante la ejecución.
Existen algunas técnicas que se puede usar para que no se produzcan bloqueos: