Skip to main content

Inicia sesión en CleanKata

Sigue tu progreso, gana XP y desbloquea todas las lecciones.

Al iniciar sesión aceptas nuestros Términos de uso y Política de privacidad.

Código Limpio70 XP7 min

Concurrencia: Deadlock y Inanición

Reconoce y elimina las cuatro condiciones que producen deadlock en sistemas concurrentes.

Las Cuatro Condiciones del Deadlock

Las condiciones de Coffman: (1) Exclusión mutua — los recursos no pueden compartirse. (2) Retener y esperar — un hilo retiene un recurso mientras espera otro. (3) Sin desalojo — los recursos no pueden tomarse por la fuerza. (4) Espera circular — un ciclo de hilos cada uno esperando al siguiente. Las cuatro deben estar presentes. Rompe cualquiera para prevenir el deadlock.

Rompiendo la Espera Circular

La solución más práctica: adquiere todos los locks en un orden global consistente. Si cada hilo adquiere el lock A antes que el B, la espera circular es imposible. Otra estrategia: usa tiempos de espera — si no se puede adquirir un lock dentro de un plazo, libera todos los locks retenidos y vuelve a intentarlo.

Desafío de Código

Identifica la espera circular y luego aplica el orden canónico de locks para corregirla.

💡Conclusión clave

La mayoría de los deadlocks comparten una solución: siempre adquiere múltiples locks en el mismo orden canónico en toda la base de código.

🔧 Algunos ejercicios pueden tener errores. Si algo parece incorrecto, usa el botón Feedback (abajo a la derecha) para reportarlo — nos ayuda a corregirlo rápido.

Pista: Las cuatro condiciones del deadlock: exclusión mutua, retener y esperar, sin desalojo, espera circular. Rompe cualquiera para prevenirlo.

✗ Tu versión

Concurrencia: Deadlock y Inanición — CleanKata — CleanKata