Një deadlock është një gjendje ku dy ose më shumë thread-e presin përgjithmonë secili për një burim që të tjerët e mbajnë, kështu që asnjëri s'mund të vazhdojë. Kërkon që katër kushte të mbahen njëkohësisht (kushtet Coffman).
Një deadlock është një gjendje ku dy ose më shumë thread-e presin përgjithmonë secili për një burim që të tjerët e mbajnë, kështu që asnjëri s'mund të vazhdojë. Kërkon që katër kushte të mbahen njëkohësisht (kushtet Coffman).
Thyej cilindo dhe deadlock bëhet i pamundur.
Thread 1 mban A, do B ─┐
├─ circular wait → deadlock
Thread 2 mban B, do A ─┘
# DEADLOCK: thread-et kyçin në rende të kundërta
def t1():
with lockA:
with lockB: ... # T1: A pastaj B
def t2():
with lockB:
with lockA: ... # T2: B pastaj A ← cikël!
# RREGULLIM: vendos një rend global kyçjeje (gjithmonë A para B)
def safe():
with lockA:
with lockB: ... # secili merr në të njëjtin rend
tryAcquire(timeout), tërhiqu dhe ribëj — thyen hold-and-wait.Deadlock-et i ngrijnë sistemet në heshtje — pa crash, thjesht kërkesa të varura. Emërtimi i katër kushteve tregon që mund të arsyetosh rreth pse ndodh dhe të zgjedhësh një parandalim të synuar (zakonisht rend konsistent kyçjeje), në vend që të spërkatësh lock-e dhe të shpresosh.
Një bibliotekë pyetjesh intervistash IT me përgjigje të detajuara — nga Junior te Senior.
Dhuro