ایک 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 نہیں، بس hung requests۔ چار شرائط کا نام لینا ظاہر کرتا ہے کہ آپ یہ استدلال کر سکتے ہیں کہ یہ کیوں ہوتا ہے اور ایک ہدف شدہ روک تھام (عموماً مستقل lock ordering) منتخب کر سکتے ہیں، بجائے اس کے کہ locks بکھیر کر اُمید لگائیں۔
تفصیلی جوابات کے ساتھ IT انٹرویو سوالات کی ایک لائبریری — جونیئر سے سینئر تک۔
عطیہ دیں