একটি deadlock হলো এমন একটি অবস্থা যেখানে দুই বা ততোধিক thread প্রত্যেকে চিরকালের জন্য block হয়ে থাকে, প্রত্যেকে এমন একটি resource-এর জন্য অপেক্ষা করছে যা অন্যটি ধরে রেখেছে। কোনো কিছুই এগোয় না।
চারটি প্রয়োজনীয় (Coffman) শর্ত
চারটিই একসাথে সত্য হতে হবে — যেকোনো একটি সরিয়ে দিলে deadlock অসম্ভব:
1. Mutual exclusion → a resource is held exclusively (only one holder at a time)
2. Hold and wait → a thread holds one resource while waiting to acquire another
3. No preemption → resources can't be forcibly taken; only released voluntarily
4. Circular wait → a cycle: T1 waits for R2 (held by T2), T2 waits for R1 (held by T1)
