多重処理 (MP) は、共用メモリーを持つ密結合型マルチ CPU システムをサポートするハードウェア技術です。マルチ CPU システムを利用すれば、アプリケーションのパフォーマンスをさらに向上させることができます。
マルチスレッド (MT) は、シングルプロセッサとマルチプロセッサの両システムで並列アプリケーションの開発を可能にするソフトウェア技術です。独立した各実行スレッドは、マルチプロセッサシステムの複数の CPU 上でスケジュールされますが、メモリーやファイルなどの資源は共有しています。こうした実行スレッドを使用すると、ひとつのアプリケーションの実行を並列処理で行えるようになります。スレッドは、オペレーティングシステムが提供する相互排他ロック (mutex ロック) を使用して資源を共有し、同期をとり、相互通信を行います。多重処理とマルチスレッドを組み合わせて使用すると、アプリケーションのパフォーマンスの向上を実感できる、拡張性に富んだソリューションが得られます。
アプリケーションの並列処理を行うと、新しい多重処理システムとマルチスレッド化されたオペレーティング環境によって、パフォーマンス、応答性、柔軟性を向上させることができます。スレッド化には次の効果があります。
マルチプロセッサシステム上のパフォーマンスの向上
単一プロセッサシステム上のパフォーマンスの向上
より効率的な資源の使用
認識されている全スレッドの特定
スレッドスタックトレースの調査
マルチスレッド開発ツールを使用すると、C++ コンパイラ (および多重処理 C コンパイラ) の機能を拡張し、多重処理を最適化することができます。多重処理とマルチスレッド開発のためのツールセットには、Sun WorkShop デバッガと dbx のマルチスレッド化拡張機能の他に、「ロック lint」、「ループツール」という 2 つの補助ツールが含まれています。
相互排他ロック (mutex ロック) と読み取り・書き込みロックの使用状況を静的に解析するには、ロック lint を使用します。このツールで、矛盾したロックの使用を検索すると、データの競合とデッドロックの一般的な原因を検出することができます。
多重処理 C++ コンパイラや C コンパイラと併せて、パフォーマンス解析ツール -- ループツールとループレポート -- を利用することができます。コンパイラは、ループが問題なく並列化でき、この処理が効果的であると判断すると、自動的に並列化処理を行います。ループツールには、次の機能があります。
並列ループ、逐次ループのブラウズと、ループ実行時のグラフを表示する機能
どのループが並列化されているかを示すパフォーマンスデータを表示する機能
ループが並列化されなかった理由に関するコンパイラヒントを取得する機能
図表示から特定のループのソースコードに直接移動し、ソースコード編集を簡単にする機能
ループレポートのコマンド行ツールを使用すると、全ループの実行時一覧表が作成されます。この一覧表には、ループが並列化されなかった理由を示すコンパイラヒントも含まれています。