Een deadlock is een toestand waarin twee of meer threads elk voor altijd wachten op een resource die de anderen vasthouden, zodat geen van hen verder kan. Het vereist dat vier voorwaarden tegelijk gelden (Coffman-voorwaarden).
Een deadlock is een toestand waarin twee of meer threads elk voor altijd wachten op een resource die de anderen vasthouden, zodat geen van hen verder kan. Het vereist dat vier voorwaarden tegelijk gelden (Coffman-voorwaarden).
Breek er één en deadlock is onmogelijk.
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), terugtrekken en opnieuw proberen — breekt hold-and-wait.Deadlocks bevriezen systemen stilletjes — geen crash, alleen vastgelopen requests. De vier voorwaarden benoemen toont dat je kunt redeneren over waarom het gebeurt en een gerichte preventie kunt kiezen (meestal consistente lock-volgorde), in plaats van locks te strooien en te hopen.
Een bibliotheek met IT-sollicitatievragen met gedetailleerde antwoorden — van Junior tot Senior.
Doneren