JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.3: スレッドアナライザユーザーズガイド     Oracle Solaris Studio 12.3 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

1.  スレッドアナライザとその機能について

2.  データの競合チュートリアル

3.  デッドロックのチュートリアル

3.1 デッドロックについて

3.2 デッドロックチュートリアルのソースファイルの入手

3.2.1 din_philo.c のソースコードリスト

3.3 食事する哲学者の問題

3.3.1 哲学者がデッドロックに陥るしくみ

3.3.2 哲学者 1 の休眠時間の導入

3.4 スレッドアナライザを使用したデッドロックの検索方法

3.4.1 ソースコードをコンパイルする

3.4.2 デッドロック検出実験を作成する

3.4.3 デッドロック検出実験を検証する

3.4.3.1 スレッドアナライザを使用したデッドロック検出実験結果の表示

3.4.3.2 er_print を使用した、デッドロック検出実験結果の表示

3.5 デッドロックの実験結果について

3.5.1 デッドロックが発生した実行の検証

3.5.2 潜在的デッドロックがあるにもかかわらず完了した実行の検証

3.6 デッドロックの修正と誤検知について

3.6.1 トークンを使用した哲学者の規制

3.6.1.1 誤検知レポート

3.6.2 トークンの代替システム

A.  スレッドアナライザで認識される API

B.  役に立つヒント

3.1 デッドロックについて

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

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

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

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