Deadlock huwa stat fejn żewġ threads jew aktar kull wieħed jistenna għal dejjem għal riżorsa li jżommu l-oħrajn, għalhekk ħadd ma jista' jipproċedi. Jeħtieġ li erba' kondizzjonijiet iżommu simultanjament (kondizzjonijiet ta' Coffman).
Deadlock huwa stat fejn żewġ threads jew aktar kull wieħed jistenna għal dejjem għal riżorsa li jżommu l-oħrajn, għalhekk ħadd ma jista' jipproċedi. Jeħtieġ li erba' kondizzjonijiet iżommu simultanjament (kondizzjonijiet ta' Coffman).
Ikser waħda minnhom u d-deadlock ikun impossibbli.
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), irtira u erġa' pprova — ikisser il-hold-and-wait.Id-deadlocks jiffriżaw is-sistemi b'mod siekt — l-ebda crash, biss requests imwaħħlin. Li ssemmi l-erba' kondizzjonijiet juri li tista' tirraġuna dwar għaliex jiġri u tagħżel prevenzjoni mmirata (ġeneralment ordni konsistenti tal-locks), minflok tferrex locks u tittama.
Librerija ta' mistoqsijiet ta' intervisti tal-IT b'tweġibiet dettaljati — minn Junior sa Senior.
Iddona