Is staid é deadlock ina bhfanann dhá shnáithe nó níos mó go deo ar acmhainn a shealbhaíonn na cinn eile, ionas nach féidir le ceann ar bith acu dul ar aghaidh. Éilíonn sé ceithre choinníoll a bheith fíor go comhuaineach (coinníollacha Coffman).
Is staid é deadlock ina bhfanann dhá shnáithe nó níos mó go deo ar acmhainn a shealbhaíonn na cinn eile, ionas nach féidir le ceann ar bith acu dul ar aghaidh. Éilíonn sé ceithre choinníoll a bheith fíor go comhuaineach (coinníollacha Coffman).
Bris ceann ar bith acu agus tá deadlock dodhéanta.
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), cúlaigh agus atriail — briseann sé sealbhaigh-agus-fan.Reoann deadlocks córais go ciúin — gan aon tuairteáil, díreach iarratais chrochta. Léiríonn ainmniú na gceithre choinníoll gur féidir leat réasúnaíocht a dhéanamh faoi cén fáth a dtarlaíonn sé agus cosc spriocdhírithe a roghnú (ordú glas comhsheasmhach de ghnáth), seachas glais a chroitheadh agus a bheith ag súil le rud.
Leabharlann de cheisteanna agallaimh TF le freagraí mionsonraithe — ó Shóisearach go Sinsearach.
Síntiús