Deadlock ni hali ambapo threads mbili au zaidi kila moja inasubiri milele rasilimali ambayo nyingine inashikilia, hivyo hakuna inayoweza kuendelea. Inahitaji masharti manne yatimie kwa wakati mmoja (Coffman conditions).
Deadlock ni hali ambapo threads mbili au zaidi kila moja inasubiri milele rasilimali ambayo nyingine inashikilia, hivyo hakuna inayoweza kuendelea. Inahitaji masharti manne yatimie kwa wakati mmoja (Coffman conditions).
Vunja lolote kati yao na deadlock haiwezekani.
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), rudi nyuma na jaribu tena — huvunja hold-and-wait.Deadlocks huganda mifumo kimyakimya — hakuna crash, ni requests zilizoning'inia tu. Kutaja masharti manne kunaonyesha unaweza kufikiri kuhusu kwa nini linatokea na kuchagua kinga iliyolengwa (kwa kawaida consistent lock ordering), badala ya kunyunyiza locks na kutumaini.
Maktaba ya maswali ya mahojiano ya IT yenye majibu ya kina — kutoka Junior hadi Senior.
Changia