マルチスレッド処理を生かしたアプリケーションには、以下を含む多くの利点があります。

  • 効率面で優れたCPUの使用
  • システムの信頼性の向上
  • マルチプロセッサのコンピュータでのパフォーマンス向上

効率面で優れたCPUの使用

多くのLabVIEWアプリケーションでは、計測器またはデータ収集デバイスに対して同期の集録呼び出しを行います。そのような呼び出しはしばしば、完了するまでにかなり時間がかかります。シングルスレッドのアプリケーションのこのような同期の呼び出しでは、集録が完了するまでLabVIEWアプリケーション内の他のタスクの実行が結果として妨げられます。LabVIEWでは、マルチスレッド処理によってこのような妨げを回避できます。同期の集録呼び出しが1つのスレッドで実行される間、データ解析やファイルI/Oなど、集録に依存しないプログラムの他の部分は異なるスレッドで実行されます。このように、集録が完了するまで停止せずに、集録の間にもアプリケーションの実行が進行します。

このように、アプリケーションの任意のスレッドで実行準備ができている場合にプロセッサがアイドル状態にならないため、マルチスレッド処理アプリケーションはプロセッサの効率を強化します。これらの同期動作が行われている間にCPUを効率よく使用できるというだけで、ファイルへの読み書き、入出力の実行、またはユーザインタフェースのポーリングを行うすべてのプログラムには、マルチスレッド処理が役に立ちます。

システムの信頼性の向上

プログラムをさまざまな実行スレッドに分割することで、重要な動作に対してプログラムの他の動作が悪影響を及ぼすのを回避することができます。一番よく知られた例は、ユーザインタフェースがタイムクリティカルの動作に対して及ぼす影響です。多くの場合、画面のアップデートやユーザイベントへの応答によってプログラムの実行速度が低下する可能性があります。たとえば、ウィンドウを移動したり、ウィンドウのサイズを変更したり、また、別のウィンドウを開いたりする場合、プロセッサがそのユーザインタフェースイベントに応答する間、プログラムの実行は事実上停止されます。

LabVIEWのマルチスレッド処理のアプリケーションでは、ユーザインタフェースの動作は専用のユーザインタフェーススレッドに分割され、プログラムのデータ収集、解析、ファイルI/Oの部分は異なるスレッドで実行されることが可能です。ユーザインタフェーススレッドの優先度を時間を重視する他の動作より低くすることで、コンピュータベースの計測器からのデータ収集など、CPUによるもっと重要な動作の実行がユーザインタフェースの動作によって妨げられないようにすることが確実にできます。たとえば、ウィンドウが移動されたからといってデータが喪失されることがないよう、ユーザインタフェースの優先度を「低」にすると、データの集録および処理、LabVIEWのパフォーマンス、そしてコンピュータの性能を含むシステム全体の信頼性が向上します。

マルチスレッド処理によってシステムの信頼性が向上するもう一つの例は、高速データ収集を行い、その結果を表示する場合です。画面のアップデートは、連続した高速データ収集などの他の動作に対して遅いことがしばしばあります。シングルスレッドのアプリケーションで高速で大量のデータの集録を行い、その全データをグラフに表示する場合、データバッファはオーバーフローとなる可能性があります。これは、画面のアップデートにプロセッサが費やす時間が強制的に長くなるためです。データバッファがオーバーフローになると、データは喪失されます。

しかし、ユーザインタフェースがスレッドに分割されたLabVIEWのマルチスレッド処理アプリケーションでは、データ収集のタスクは、優先度のもっと高い別のスレッドに常駐することができます。この場合、データの集録と表示は別々に実行されるため、集録は連続実行されてデータは妨害されずにメモリに送信されます。表示はできる限り高速に実行され、実行時にメモリにあるデータが描画されます。スクリーンがアップデートされてもデータを喪失しないよう、集録スレッドは表示スレッドより優先的に実行されます。

マルチプロセッサのコンピュータでのパフォーマンス向上

マルチスレッド処理の最も有望な利点の1つには、マルチプロセッサのコンピュータのパワーを利用できることが挙げられます。今日の高性能なコンピュータにはたいてい、演算パワーのための複数のプロセッサが追加で装備されています。これらのコンピュータの利点を最大限に利用するために、マルチスレッド処理のアプリケーションが用意されています。複数のスレッドが同時に実行する準備があるマルチスレッド処理のアプリケーションでは、それぞれのプロセッサが異なるスレッドを実行することができます。マルチプロセッサのコンピュータでは、アプリケーションが真の並列タスク実行を実現することができ、システムの全体の性能が向上します。

その反面、シングルスレッドのアプリケーションは単一のプロセッサでしか実行できないため、複数のプロセッサの利点を生かして性能を向上させるのを妨げています。したがって、マルチスレッド処理のオペレーティングシステムおよびマルチプロセッサのマシンのパフォーマンスを最大限引き出すには、アプリケーションがマルチスレッド処理である必要があります。