एक 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), पीछे हटें और retry करें — hold-and-wait तोड़ता है।Deadlocks systems को चुपचाप जमा देते हैं — कोई crash नहीं, बस अटकी हुई requests। चार शर्तों को नाम देना दिखाता है कि आप क्यों ऐसा होता है, इस पर तर्क कर सकते हैं और एक लक्षित रोकथाम (आमतौर पर सुसंगत lock ordering) चुन सकते हैं, locks छिड़ककर उम्मीद करने के बजाय।
विस्तृत उत्तरों के साथ IT इंटरव्यू प्रश्नों की एक लाइब्रेरी — जूनियर से सीनियर तक।
दान करें