ఒక deadlock అనేది రెండు లేదా అంతకంటే ఎక్కువ threadలు ఒక్కొక్కటి శాశ్వతంగా block అయ్యే స్థితి, ప్రతి ఒక్కటి మరొకటి పట్టుకున్న వనరు కోసం వేచిచూస్తుంది. ఏదీ ముందుకు సాగదు.
నాలుగు అవసరమైన (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)
