Um deadlock é um estado em que duas ou mais threads esperam para sempre por um recurso que as outras seguram, então nenhuma pode prosseguir. Ele requer que quatro condições valham simultaneamente (condições de Coffman).
Um deadlock é um estado em que duas ou mais threads esperam para sempre por um recurso que as outras seguram, então nenhuma pode prosseguir. Ele requer que quatro condições valham simultaneamente (condições de Coffman).
Quebre qualquer uma e o deadlock se torna impossível.
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), recue e retente — quebra o hold-and-wait.Deadlocks congelam sistemas silenciosamente — sem crash, apenas requisições travadas. Nomear as quatro condições mostra que você sabe raciocinar sobre por que isso acontece e escolher uma prevenção direcionada (geralmente ordenação consistente de locks), em vez de espalhar locks e torcer.
Uma biblioteca de perguntas de entrevista de TI com respostas detalhadas — de Júnior a Sênior.
Doar