En este ejemplo clásico de bloqueo mutuo, es fácilmente visible la condición de espera circular en la que los procesos se encuentran, donde cada uno solicita un recurso que está asignado a otro proceso.También conocidas como condiciones de Coffman por su primera descripción en 1971 en un artículo escrito por E. G.[3] Estas condiciones deben cumplirse simultáneamente y no son totalmente independientes entre ellas.Para cada petición de recursos, el sistema controla si satisfaciendo el pedido entra en un estado inseguro, donde puede producirse un bloqueo mutuo.Livelock es un riesgo con algunos algoritmos que detectan y recuperan los interbloqueos, pues si más de uno toma cartas en el asunto, la detección del interbloqueo puede ser disparada continuamente; pudiendo ser arreglado asegurándose que solo un proceso (escogido al azar o por prioridad) tome acción.
En el siguiente ejemplo, dos procesos compiten por dos recursos que necesitan para funcionar, que solo pueden ser utilizados por un proceso a la vez. El primer proceso obtiene el permiso de utilizar uno de los recursos (adquiere el
lock
sobre ese recurso). El segundo proceso toma el lock del otro recurso, y luego intenta utilizar el recurso ya utilizado por el primer proceso, por lo tanto queda en espera. Cuando el primer proceso a su vez intenta utilizar el otro recurso, se produce un interbloqueo, donde los dos procesos esperan la liberación del recurso que utiliza el otro proceso.
Ejemplo de representación de Bloqueo Mutuo en grafos de asignación de recursos con dos procesos
A
y
B
, y dos recursos
R1
y
R2
.