Oracle Solaris Studio 12.2: スレッドアナライザユーザーズガイド

3.1 デッドロックについて

デッドロックという用語は、2 つ以上のスレッドが互いを待機しているために処理がどこへも進まない状況を意味します。デッドロックの原因は、間違ったプログラムロジックや (ロックやバリアーなどの) 同期の不適切な使用など数多くあります。このチュートリアルでは、相互排他ロックの不適切な使用によって生じたデッドロックに焦点を当てます。この種のデッドロックは、マルチスレッドアプリケーションでよく生じます。

2 つ以上のスレッドを含むプロセスが次の 3 つの条件に当てはまるときに、デッドロックが発生する可能性があります。

デッドロック状況の簡単な例を次に示します。

デッドロックには、潜在的デッドロックとデッドロックの 2 つの種類があり、次のような違いがあります。