TL;DR

E. Coffman らが 1971 年の論文「System Deadlocks」で示した、デッドロックが起きるための 4 つの必要条件。デッドロックが起きるのは、この 4 つがすべて成り立つときに限られる。

仕組み

Mutual Exclusion(相互排他)

あるリソースは、一度に 1 つのスレッド(プロセス)しか使えない。

Hold and Wait(保持と待機)

あるスレッドが、すでにロックを保持したまま、他のリソースを待っている。

No Preemption(プリエンプションなし)

他のスレッドが保持しているリソースを、強制的に奪えない。

Circular Wait(循環待機)

複数のスレッドが、循環するようにリソースを待っている。

関連

出典