ਇੱਕ deadlock ਇੱਕ ਅਜਿਹੀ ਸਥਿਤੀ ਹੈ ਜਿੱਥੇ ਦੋ ਜਾਂ ਵੱਧ threads ਹਰ ਇੱਕ ਇੱਕ resource ਲਈ ਹਮੇਸ਼ਾ ਲਈ ਉਡੀਕ ਕਰਦੇ ਹਨ ਜੋ ਦੂਜੇ ਰੱਖਦੇ ਹਨ, ਇਸ ਲਈ ਕੋਈ ਵੀ ਅੱਗੇ ਨਹੀਂ ਵਧ ਸਕਦਾ। ਇਸ ਨੂੰ ਇੱਕੋ ਸਮੇਂ ਚਾਰ conditions ਦੇ ਪੂਰੇ ਹੋਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ (Coffman conditions)।
ਇੱਕ deadlock ਇੱਕ ਅਜਿਹੀ ਸਥਿਤੀ ਹੈ ਜਿੱਥੇ ਦੋ ਜਾਂ ਵੱਧ threads ਹਰ ਇੱਕ ਇੱਕ resource ਲਈ ਹਮੇਸ਼ਾ ਲਈ ਉਡੀਕ ਕਰਦੇ ਹਨ ਜੋ ਦੂਜੇ ਰੱਖਦੇ ਹਨ, ਇਸ ਲਈ ਕੋਈ ਵੀ ਅੱਗੇ ਨਹੀਂ ਵਧ ਸਕਦਾ। ਇਸ ਨੂੰ ਇੱਕੋ ਸਮੇਂ ਚਾਰ conditions ਦੇ ਪੂਰੇ ਹੋਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ (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), back off ਕਰੋ ਅਤੇ retry ਕਰੋ — hold-and-wait ਨੂੰ ਤੋੜਦਾ ਹੈ।Deadlocks systems ਨੂੰ ਚੁੱਪ-ਚਾਪ ਜਮਾ ਦਿੰਦੇ ਹਨ — ਕੋਈ crash ਨਹੀਂ, ਬਸ ਲਟਕੇ ਹੋਏ requests। ਚਾਰ conditions ਦਾ ਨਾਮ ਲੈਣਾ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਇਹ ਤਰਕ ਕਰ ਸਕਦੇ ਹੋ ਕਿ ਇਹ ਕਿਉਂ ਹੁੰਦਾ ਹੈ ਅਤੇ ਇੱਕ ਟੀਚੇ ਵਾਲੀ ਰੋਕਥਾਮ (ਆਮ ਤੌਰ 'ਤੇ ਇਕਸਾਰ lock ordering) ਚੁਣ ਸਕਦੇ ਹੋ, locks ਛਿੜਕ ਕੇ ਉਮੀਦ ਲਾਉਣ ਦੀ ਬਜਾਏ।
ਵਿਸਤ੍ਰਿਤ ਜਵਾਬਾਂ ਨਾਲ IT ਇੰਟਰਵਿਊ ਸਵਾਲਾਂ ਦੀ ਇੱਕ ਲਾਇਬ੍ਰੇਰੀ — ਜੂਨੀਅਰ ਤੋਂ ਸੀਨੀਅਰ ਤੱਕ।
ਦਾਨ ਕਰੋ