このセクションでは、Oracle Solaris のマルチスレッドアプリケーション問題に対処する方法について説明します。
Oracle Solaris Studio のスレッドアナライザは、アプリケーション最適化のための高度なツールであり、マルチスレッドアプリケーションの妥当性を保証します。具体的には、スレッドアナライザは、マルチスレッドアプリケーションで発生することがある特殊な状況を検出、分析、およびデバッグできます。詳細は、『Oracle Solaris Studio 12.4: スレッドアナライザユーザーズガイド』を参照してください。
競合状態およびデッドロックの問題を検出するためにソースコードを計測するには、特殊なフラグを指定してソースコードをコンパイルし、collect –r コマンドの制御下で実行してから、スレッドアナライザにプログラムをロードします。
最初に –xinstrument=datarace コンパイラフラグを指定してアプリケーションをコンパイルします。行番号およびコールスタック情報が正しく返されるようにするには、–g フラグを設定し、最適化レベルを指定しないでください。
collect –r コマンドを発行したあと、生成されたアプリケーションコードを実行し、主要な実行時の情報を収集します。collect –r all オプションを使用してプログラムを実行し、処理の実行中にデータ競合およびデッドロックの検出の実験を作成します。
% collect -r race app params % collect -r deadlock app params
実験の結果をスレッドアナライザにロードして、データ競合およびデッドロック状態を識別します。