No.3
- 回答日時:
プロセスとは何か、スレッドとは何かという事を調べるとわかると思います。
他の方が書いている通り、物理CPUの数とかコア数とは全く関係ありません。
プロセスとは、CPUの実行単位にメモリや使っているファイルがくっついたようなものです。
プロセスAとプロセスBは、データを保存するメモリを共有しないので、AとBとの間のデータのやりとりにはメモリ以外の手段を取る必要があります。共有メモリ、プロセス間通信、ファイル経由など。
スレッドとは、CPUの実行単位で、必ずプロセスに属します。1プロセスが1スレッドの事もあれば、1プロセスが複数のスレッドからなることもあります。
プロセスAに属するスレッド1とスレッド2は、データ保存用のメモリを共有するので、上とは逆に、スレッド1が使っているメモリ部分をスレッド2がむやみに書き換えたりしないようにしないといけません。
ある処理をするプログラムを書くときに、1プロセス1スレッドのプログラムにするのか、マルチプロセスそれぞれ1スレッドにするのか、1プロセスマルチスレッドにするのか、マルチプロセスそれぞれマルチスレッドにするのか、それぞれメリットデメリットがあるので、方式を検討して決定します。
No.2ベストアンサー
- 回答日時:
結論から言えば、間違っています。
ただ、そのとらえ方は、あながち的外れでもないというところでしょうか。
まず、正解からいえば、文字通り、
マルチスレッド=複数のスレッドを並行して実行すること
マルチプロセス=複数のプロセスを並行して実行すること
です。
ちなみに、コア数は関係ありません。シングルコアでも、マルチスレッドでもマルチプロセスでも可能。
ということで、では、プロセスとかスレッドとかは何? ということになりますので、これは、詳しく勉強してみるといいと思います。
イメージとしては、もしも、Windows を使っているのであれば、タスクマネージャの、「プロセス」タブをみてください。
ここで、一覧表示されている一つ一つが「プロセス」です。
そして、「スレッド」という項目があると思います。
(標準では表示されていないかもしれません。この場合、表示メニューから、「列の選択」を選ぶと、その中に、「スレッドの数」というのが存在します。)
ひとつのプロセスに、ひとつ以上の「スレッド」があるのがわかると思います。
スレッドというのは、こういう単位です。
今の Windows は、プロセスとして表示されている物を並行して実行しています。そして、個々のプロセスは、ひとつ以上のスレッドを持ちます。
スレッドというのは、直訳すれば、「糸」で、「処理の道筋」を意味します。メールソフトや、掲示板で、議論の流れを「スレッド」と表現する場合もありますが、これも、意味としては同じような物です。
ひとつのプロセスの中にも、いろいろな処理があります。
たとえば、ブラウザで、こういう文章の入力を処理していたり、それと並行して、サーバーにつないで、ページが更新されてないか確認して、さらに、別のところでは、画像をダウンロードしているかもしれません。
それらのひとつひとつがスレッドだと思って、大きな間違いはありません。
マルチスレッドが可能であれば、ひとつのブラウザで、コメントを読みながら、ページを表示しながら、ダウンロードしながら、どこかのサイトからストリーミングされている音楽を鳴らすことができるのです。
一方、こうして、ブラウザでコメントを読んでいる間に、別のソフト(たとえばメールソフト)が、メールを受信しているかもしれません。
これが、別個のソフトで実行されていれば、それぞれは、別のプロセスとして動いている(可能性が高い)わけです。
その意味で、
・ひとつのプロセスの中の処理を並行しているのがマルチスレッド
・別々のプロセスを並行して処理するのがマルチプロセス
というのは、イメージとしては間違ってないでしょう。
No.1
- 回答日時:
一つのプログラム内の複数のスレッド(処理)を同時に実行するのが「マルチスレッド」。
コア数は関係なし。複数のコアで、独立してアプリケーションを同時実行するのが「マルチプロセス」。
だと思うけど、「プロセス」が何処までを意味しているのか質問分だけからだと不明。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バックグラウンドのプロセスの...
-
IISがフリーズ
-
ShellExecuteが起動したプロセ...
-
VB6.0 SHELLで起動...
-
タスクマネージャーのプロセス...
-
VB.NET 自プログラムのプロセス...
-
AppActivate関数について
-
指定した実行中プロセスの、指...
-
vb.netでEXCEL起動がうまくでき...
-
C++のプログラムをバックグラウ...
-
EXE間でデータを受け渡し時のka...
-
子プロセスのデバッグ方法について
-
プロセスの再起動
-
ADOでアクセスのレコードに...
-
c言語でプロセスIDを調べたい
-
他のアプリケーションをクリッ...
-
SendMessageが失敗するときがある
-
Process.Startの戻り値を後で取得
-
プロセスが実行中かどうか調べ...
-
怪しいプロセス教えてください。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バックグラウンドのプロセスの...
-
タスクマネージャーのプロセス...
-
explorer.exeが異様にメモリを食う
-
プロセスのアタッチ・デタッチ...
-
C#でのbatファイル実行結果取得
-
プロセスIDからウィンドウハ...
-
VB6.0 SHELLで起動...
-
非表示になったエクセルは?
-
SendMessageが失敗するときがある
-
ADOでアクセスのレコードに...
-
c言語でプロセスIDを調べたい
-
Process.Startの戻り値を後で取得
-
OSPFでプロセスを分ける意義に...
-
セマフォとmutexの違いは?
-
Visual C++からpingを実行して...
-
プロセスIDの取得方法について
-
Linuxでのスレッド間メッセージ...
-
怪しいプロセス教えてください。
-
ウィンドウのタイトルからプロ...
-
別のプロセスの関数を呼び出す...
おすすめ情報