Deadlock je stanje u kojem dvije ili više niti svaka zauvijek čeka na resurs koji drži druga, pa nijedna ne može nastaviti. Zahtijeva da četiri uvjeta vrijede istovremeno (Coffmanovi uvjeti).
Deadlock je stanje u kojem dvije ili više niti svaka zauvijek čeka na resurs koji drži druga, pa nijedna ne može nastaviti. Zahtijeva da četiri uvjeta vrijede istovremeno (Coffmanovi uvjeti).
Probijte bilo koji jedan i deadlock je nemoguć.
Nit 1 drži A, želi B ─┐
├─ kružno čekanje → deadlock
Nit 2 drži B, želi A ─┘
# DEADLOCK: niti zaključavaju u suprotnim redoslijedima
def t1():
with lockA:
with lockB: ... # T1: A pa B
def t2():
with lockB:
with lockA: ... # T2: B pa A ← ciklus!
# POPRAVAK: nametni globalni redoslijed zaključavanja (uvijek A prije B)
def safe():
with lockA:
with lockB: ... # svi dohvaćaju istim redoslijedom
tryAcquire(timeout), odustani i ponovi — probija drži-i-čekaj.Deadlockovi zamrzavaju sustave tiho — bez pada, samo obješeni zahtjevi. Imenovanje četiriju uvjeta pokazuje da možete rasuđivati o tome zašto se događa i odabrati ciljano sprječavanje (obično dosljedan redoslijed zaključavanja), umjesto da posipate zaključavanja i nadate se.
Knjižnica IT pitanja za razgovore za posao s detaljnim odgovorima — od Juniora do Seniora.
Doniraj