Un deadlock es un estado en el que dos o más hilos esperan para siempre un recurso que los otros retienen, de modo que ninguno puede avanzar. Requiere que cuatro condiciones se cumplan simultáneamente (condiciones de Coffman).
Un deadlock es un estado en el que dos o más hilos esperan para siempre un recurso que los otros retienen, de modo que ninguno puede avanzar. Requiere que cuatro condiciones se cumplan simultáneamente (condiciones de Coffman).
Rompe cualquiera de ellas y el deadlock es imposible.
Thread 1 holds A, wants B ─┐
├─ circular wait → deadlock
Thread 2 holds B, wants A ─┘
# DEADLOCK: threads lock in opposite orders
def t1():
with lockA:
with lockB: ... # T1: A then B
def t2():
with lockB:
with lockA: ... # T2: B then A ← cycle!
# FIX: impose a global lock ordering (always A before B)
def safe():
with lockA:
with lockB: ... # everyone acquires in the same order
tryAcquire(timeout), retrocede y reintenta — rompe el retener-y-esperar.Los deadlocks congelan los sistemas silenciosamente — sin caída, solo peticiones colgadas. Nombrar las cuatro condiciones demuestra que puedes razonar sobre por qué ocurre y elegir una prevención dirigida (normalmente un orden de bloqueo consistente), en lugar de esparcir locks y esperar.
Una biblioteca de preguntas de entrevista de IT con respuestas detalladas — de Junior a Senior.
Donar