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

ドキュメントの情報

はじめに

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

1.1 スレッドアナライザの開始

1.1.1 データの競合とは

1.1.2 デッドロックとは

1.2 スレッドアナライザ使用モデル

1.2.1 データの競合を検出するための使用モデル

1.2.1.1 データの競合を検出するコードを計測する

ソースレベルの計測

バイナリレベルの計測

1.2.1.2 計測済みアプリケーションで実験を作成する

1.2.1.3 データの競合についての実験結果を検討する

1.2.2 デッドロックを検出するための使用モデル

1.2.2.1 デッドロックを検出するための実験を作成する

1.2.2.2 デッドロックの実験結果を検討する

1.2.3 データの競合およびデッドロックを検出するための使用モデル

1.3 スレッドアナライザのインタフェース

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

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

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

B.  役に立つヒント

1.1 スレッドアナライザの開始

スレッドアナライザはスレッド分析実験を検査するために設計された、パフォーマンスアナライザの特殊なビューです。パフォーマンスアナライザをこの特殊なビューで開始するには別のコマンド tha が使用され、この方法で開始されるツールはスレッドアナライザとして知られています。

スレッドアナライザは、このマニュアルで説明されているように、これらのタイプのデータを検査するために特別に生成できる実験でのデータの競合およびデッドロックを表示できます。

1.1.1 データの競合とは

スレッドアナライザは、マルチスレッドプロセスの実行中に生じたデータの競合を検出します。データの競合は、次のすべての条件に当てはまるときに生じます。

この3つの条件が揃うとアクセス順序が定まらないため、実行するたびにその時の順序によって計算結果が異なる可能性があります。データの競合には、害のないもの (メモリーアクセスをビジーウェイトに使用するときなど) もありますが、データの競合の多くはプログラムのバグによるものです。

スレッドアナライザは、POSIX スレッド API、Solaris スレッド API、OpenMP、またはこれらの組み合わせを使用して作成されたマルチスレッドプログラムで動作します。

1.1.2 デッドロックとは

デッドロックとは、2 つ以上のスレッドが互いを待機しているために処理がまったく進まない状況を指します。デッドロックの原因は多数あります。スレッドアナライザは、相互排他ロックの不適切な使用によって生じたデッドロックを検出します。この種のデッドロックは、マルチスレッドアプリケーションでよく生じます。

2 つ以上のスレッドから成るプロセスは、次の条件がすべて揃うとデッドロックを生じることがあります。

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

デッドロックには潜在的デッドロックとデッドロックの 2 種類があります。潜在的デッドロックは、所定の実行で必ず起きるわけではありませんが、スレッドのスケジュールや、スレッドによって要求されたロックのタイミングに依存したプログラムの実行で起きる可能性があります。実デッドロックは、プログラムの実行中に発生するものです。実デッドロックでは、関係するスレッドの実行は滞りますが、プロセス全体の実行は滞ることもあれば、そうでないこともあります。