マルチスレッド処理を使うことで、アプリケーションを迅速に実行できますか?




問題: マルチスレッド処理を使うことで、アプリケーションを迅速に実行できますか?

解決策: アプリケーションによって異なりますが、もしアプリケーションが連続順に処理できるように作成されていたらこのマルチスレッド処理の迅速さを確認するのは困難です。例えば、使用されているアプリケーションが下記のように
構成されていれば、並行処理が不可能ですので、マルチスレッド処理は役立ちません。

単一CPUの場合、マルチスレッド処理はCPUを共有しなければいけません。そのため、CPUを集中的に使う複数の処理のスレッドは並行して実行しても速くなりません。実際、オペレーションシステムがスレッド間をスイッチするため実行時間は長くスピードは遅くなる可能性があります。

しかしながら、マルチプロセッサシステムの場合、マルチスレッド処理は各集中スレッド処理を同時に実行するので常に有益になります。しかし、気をつけて頂きたいのは、プロセッサでスレッドのスケジュールをするのはオペレイテリングシステムの責任であるため、ご利用のアプリケーションのスレッドを必ず複数のプロセッサでスケジュールするとは限りません。

単一、またはマルチプロセッサシステム、両方では、CPUを集中的に使うスレッドとI/Oを集中的に使うスレッドで時間を共有することが効率的です。1つのスレッドはネットワークへ読み込み書き込みを行いながら(あるいはGPIB、ハードディスク操作またはデータ集録などを行いながら)他のスレッドは処理を実行j続けることができます。単一スレッドシステムの場合、CPUはI/Oの実行が完了するまで待機しています。


関連リンク:

添付:





報告日時: 03/03/1998
最終更新日: 05/24/2000
ドキュメントID: DIRECT-3S8R24