Deadlock ही अशी स्थिती आहे जिथे दोन किंवा अधिक threads प्रत्येकजण इतरांनी धरून ठेवलेल्या resource साठी कायमचे वाट पाहतात, त्यामुळे कोणीही पुढे जाऊ शकत नाही. त्यासाठी चार अटी एकाच वेळी असणे आवश्यक असते (Coffman conditions).
Deadlock ही अशी स्थिती आहे जिथे दोन किंवा अधिक threads प्रत्येकजण इतरांनी धरून ठेवलेल्या resource साठी कायमचे वाट पाहतात, त्यामुळे कोणीही पुढे जाऊ शकत नाही. त्यासाठी चार अटी एकाच वेळी असणे आवश्यक असते (Coffman conditions).
यापैकी कोणतीही एक मोडा आणि deadlock अशक्य होते.
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), मागे हटा आणि पुन्हा प्रयत्न करा — hold-and-wait मोडते.Deadlocks systems गुपचूप गोठवतात — crash नाही, फक्त अडकलेल्या requests. चार अटी नावाने सांगणे हे दाखवते की ते का घडते याबद्दल तुम्ही तर्क करू शकता आणि locks इथेतिथे टाकून आशा करण्याऐवजी एक नेमका प्रतिबंध (सहसा consistent lock ordering) निवडू शकता.
सविस्तर उत्तरांसह IT मुलाखत प्रश्नांचे ग्रंथालय — Junior पासून Senior पर्यंत.
देणगी द्या