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