Go to main content
Oracle Solaris 11 移行の開発ガイド

印刷ビューの終了

更新: 2016 年 11 月
 
 

マルチスレッドアプリケーションの問題への対処

このセクションでは、Oracle Solaris のマルチスレッドアプリケーション問題に対処する方法について説明します。

スレッドアナライザの使用

Oracle Solaris Studio のスレッドアナライザは、アプリケーション最適化のための高度なツールであり、マルチスレッドアプリケーションの妥当性を保証します。具体的には、スレッドアナライザは、マルチスレッドアプリケーションで発生することがある特殊な状況を検出、分析、およびデバッグできます。詳細は、『Oracle Solaris Studio 12.4: スレッドアナライザユーザーズガイド』を参照してください。

競合状態およびデッドロックの検出

競合状態およびデッドロックの問題を検出するためにソースコードを計測するには、特殊なフラグを指定してソースコードをコンパイルし、collect –r コマンドの制御下で実行してから、スレッドアナライザにプログラムをロードします。

  1. 最初に –xinstrument=datarace コンパイラフラグを指定してアプリケーションをコンパイルします。行番号およびコールスタック情報が正しく返されるようにするには、–g フラグを設定し、最適化レベルを指定しないでください。

  2. collect –r コマンドを発行したあと、生成されたアプリケーションコードを実行し、主要な実行時の情報を収集します。collect –r all オプションを使用してプログラムを実行し、処理の実行中にデータ競合およびデッドロックの検出の実験を作成します。

    % collect -r race app params 
    % collect -r deadlock app params
  3. 実験の結果をスレッドアナライザにロードして、データ競合およびデッドロック状態を識別します。