Middle
¿Qué es un bloqueo mutuo?
sobes.tech AI
Respuesta de la IA
Bloqueo mutuo (deadlock) — es una situación en una aplicación multihilo en la que dos o más hilos bloquean mutuamente, esperando liberar recursos que otro hilo ha ocupado. Como resultado, ninguno de los hilos puede continuar.
Ejemplo de una situación clásica de deadlock:
- El hilo A adquiere el recurso 1 y espera el recurso 2.
- El hilo B adquiere el recurso 2 y espera el recurso 1.
Ambos hilos quedan bloqueados indefinidamente.
Para prevenir deadlocks, se aplican:
- Un orden estricto en la adquisición de recursos.
- Tiempos de espera (timeout) al esperar bloqueos.
- Uso de algoritmos no bloqueantes.
Ejemplo en Java:
synchronized(resource1) {
synchronized(resource2) {
// trabajo con los recursos
}
}
Si otro hilo intenta adquirir los recursos en orden inverso, puede ocurrir un deadlock.