• ベストアンサー

マルチスレッドとマルチプロセスの違い

マルチスレッドとマルチプロセスの違い は例えて言うなら1つのプロセスをデュアルコアで処理するのがマルチスレッドで 2つのプロセスをシングルコアで処理するのがマルチプロセスってことでいいですか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

結論から言えば、間違っています。 ただ、そのとらえ方は、あながち的外れでもないというところでしょうか。 まず、正解からいえば、文字通り、 マルチスレッド=複数のスレッドを並行して実行すること マルチプロセス=複数のプロセスを並行して実行すること です。 ちなみに、コア数は関係ありません。シングルコアでも、マルチスレッドでもマルチプロセスでも可能。 ということで、では、プロセスとかスレッドとかは何? ということになりますので、これは、詳しく勉強してみるといいと思います。 イメージとしては、もしも、Windows を使っているのであれば、タスクマネージャの、「プロセス」タブをみてください。 ここで、一覧表示されている一つ一つが「プロセス」です。 そして、「スレッド」という項目があると思います。 (標準では表示されていないかもしれません。この場合、表示メニューから、「列の選択」を選ぶと、その中に、「スレッドの数」というのが存在します。) ひとつのプロセスに、ひとつ以上の「スレッド」があるのがわかると思います。 スレッドというのは、こういう単位です。 今の Windows は、プロセスとして表示されている物を並行して実行しています。そして、個々のプロセスは、ひとつ以上のスレッドを持ちます。 スレッドというのは、直訳すれば、「糸」で、「処理の道筋」を意味します。メールソフトや、掲示板で、議論の流れを「スレッド」と表現する場合もありますが、これも、意味としては同じような物です。 ひとつのプロセスの中にも、いろいろな処理があります。 たとえば、ブラウザで、こういう文章の入力を処理していたり、それと並行して、サーバーにつないで、ページが更新されてないか確認して、さらに、別のところでは、画像をダウンロードしているかもしれません。 それらのひとつひとつがスレッドだと思って、大きな間違いはありません。 マルチスレッドが可能であれば、ひとつのブラウザで、コメントを読みながら、ページを表示しながら、ダウンロードしながら、どこかのサイトからストリーミングされている音楽を鳴らすことができるのです。 一方、こうして、ブラウザでコメントを読んでいる間に、別のソフト(たとえばメールソフト)が、メールを受信しているかもしれません。 これが、別個のソフトで実行されていれば、それぞれは、別のプロセスとして動いている(可能性が高い)わけです。 その意味で、 ・ひとつのプロセスの中の処理を並行しているのがマルチスレッド ・別々のプロセスを並行して処理するのがマルチプロセス というのは、イメージとしては間違ってないでしょう。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

プロセスとは何か、スレッドとは何かという事を調べるとわかると思います。 他の方が書いている通り、物理CPUの数とかコア数とは全く関係ありません。 プロセスとは、CPUの実行単位にメモリや使っているファイルがくっついたようなものです。 プロセスAとプロセスBは、データを保存するメモリを共有しないので、AとBとの間のデータのやりとりにはメモリ以外の手段を取る必要があります。共有メモリ、プロセス間通信、ファイル経由など。 スレッドとは、CPUの実行単位で、必ずプロセスに属します。1プロセスが1スレッドの事もあれば、1プロセスが複数のスレッドからなることもあります。 プロセスAに属するスレッド1とスレッド2は、データ保存用のメモリを共有するので、上とは逆に、スレッド1が使っているメモリ部分をスレッド2がむやみに書き換えたりしないようにしないといけません。 ある処理をするプログラムを書くときに、1プロセス1スレッドのプログラムにするのか、マルチプロセスそれぞれ1スレッドにするのか、1プロセスマルチスレッドにするのか、マルチプロセスそれぞれマルチスレッドにするのか、それぞれメリットデメリットがあるので、方式を検討して決定します。

  • anicicle
  • ベストアンサー率36% (129/356)
回答No.1

一つのプログラム内の複数のスレッド(処理)を同時に実行するのが「マルチスレッド」。コア数は関係なし。 複数のコアで、独立してアプリケーションを同時実行するのが「マルチプロセス」。 だと思うけど、「プロセス」が何処までを意味しているのか質問分だけからだと不明。