2009-08-25 6 views
1

プロセスとスレッドのパフォーマンスは、どのようにタイムスライスによって変化しますか(実行にどれくらいの時間がかかりますか)。プロセスとスレッド

+1

スレッドなしのプロセスはありません。プロセスとは、少なくとも1つのスレッド、主スレッドを持つスレッドのグループです。 – Havenard

+1

@madhu - 質問を言い換えると、複数のプロセスを使用する場合と複数のスレッドを使用する場合の相対的なメリットについて質問しているようですが、質問に集中する必要があります。 –

答えて

9

私はあなたの質問を次のように言い換えるといいでしょう:単一のアプリケーションで複数のスレッドを処理する必要がありますか、代わりに複数のプロセスを使用する必要がありますか?

この質問では、タイムスライスはまったく重要ではありません。今日のオペレーティングシステムでは、スレッドのスケジュールが設定されており、「プレーン」プロセスは単一のスレッドとして扱われます。

パフォーマンス上重要なのは、作成オーバーヘッドです。プロセスの作成は、通常、スレッドを作成するよりもコストがかかります。マルチ処理アプリケーションは、このコストがプールを使用することを避けます。つまり、新しいプロセスを作成することはめったにありませんが、いくつかのタスクを完了した時点で再利用します。スレッドの作成はまだ高価なので、スレッドを使用してスレッドを作成することがよくあります。

また、通信オーバーヘッドが重要です。スレッドでは、メモリを簡単に共有できます。プロセスでは、通常は物事をコピーします(パイプを使用するなど)。プロセス間でもメモリを共有する方法はありますが、それらは使い方がかなり難しいです。

一般に、スレッドはプロセスよりも速くなければなりません。なぜ人々はまだプロセスを使用していますか?それらはより簡単なプログラミングモデルです。スレッド内の共有メモリのために、間違いを犯すのは非常に簡単で、スレッドセーフではないライブラリ/ APIを持つことができます。スレッド安全性の欠如は、プロセスを使用することによって回避することができます。

関連する問題