¿Qué es el deadlock?
Dos personas se encajan en una puerta estrecha: una dice «pasa tú», la otra «no, tú primero» — y ninguna pasa. El deadlock es eso con agentes: varios esperan cada uno por un recurso o acción que otro tiene, formando un «tú espera, yo espero» que nunca se resuelve.¿Cómo ocurre?
Recursos que nadie sueltaEl agente A bloquea el archivo X y quiere el Y; el agente B bloquea el Y y quiere el X. A espera que B suelte Y, B espera que A suelte X: un nudo.
Esperar a que el otro mueva primero
Dos agentes esperan la respuesta del otro antes de seguir, así que ambos se quedan quietos.
Dependencia circular
Tres o más agentes forman un anillo, cada uno esperando al siguiente, sin salida.
¿Cómo detectarlo?
Las señales clásicas: la barra de progreso se detiene, los logs se llenan de «esperando», las peticiones caducan una y otra vez. La monitorización puede dibujar un grafo de «quién espera a quién» y buscar ciclos.Cómo prevenirlo y romperlo
Bloquea en un orden fijoQue todos los agentes pidan recursos en el mismo orden para que las esperas no se crucen.
Pon timeouts
Si no lo consigues, ríndete, reintenta o escala — nunca esperes para siempre.
Fuerza una interrupción
Cuando esté del todo atascado, mata a uno de los que esperan para romper el bucle.
Comparte menos
Que cada agente use sus recursos locales cuando pueda, para tener menos por qué pelear.
En resumen: el deadlock son agentes esperando cada uno a que el otro mueva primero — y nadie se mueve.
Comentarios