Courses Operating Systems Concurrency Deadlocks Deadlocks Necessary Conditions for Deadlocks 1. Mutual Exclusion 2. Hold and Wait 3. No Preemption 4. Circular Wait Thread-Safe Data Structures