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で質問しましょう!
似たような質問が見つかりました
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- 哲学 真実の信仰=真理の探究 1 2022/11/26 09:03
- CPU・メモリ・マザーボード 今のCPUは2nmプロセスとか何やらで製造されているかと思いますが、このスケールをどんどん大きくして 3 2023/06/07 20:34
- 心理学 ライフヒストリー調査において、いくつかのライフ・ストーリー事例を集めることにより、共通する点が浮き彫 1 2023/06/21 11:34
- 数学 論理 数学 ∃について 添付の問題がよくわかりません。 例えば1題目、∃xとあったらまず何を考えるの 3 2022/07/09 21:13
- 環境学・エコロジー 二酸化炭素の排出 1 2023/08/07 16:40
- 数学 x^5+15x-44=0について、解き方のプロセスを誰か教えてください 3 2023/02/22 17:09
- 高校 4プロセス 例題14 「1」と「3」の場合分けはわかりますが 「2」の場合わけの意味がわからないです 3 2022/05/16 18:08
- 数学 1次合同式について、 「4755x≡7270(mod655)は170x≡65(mod655)に書き直 1 2023/06/08 14:29
- 数学 3次関数の極値を求める際 微分して導関数求める→因数分解して=0を求める といったプロセスですが、例 2 2023/05/17 13:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バックグラウンドのプロセスの...
-
explorer.exeが異様にメモリを食う
-
タスクマネージャーのプロセス...
-
プロセスIDからウィンドウハ...
-
ShellExecuteExでハンドルの取得
-
別のプロセスの関数を呼び出す...
-
プロセスが実行中かどうか調べ...
-
Windowsでのfork方法
-
C#でのbatファイル実行結果取得
-
VC++6.0 「プロセスへ...
-
ロードアベレージが高いのです...
-
プロセスのアタッチ・デタッチ...
-
AppActivate関数について
-
非表示になったエクセルは?
-
他のEXEが起動しているかの確認
-
c言語でプロセスIDを調べたい
-
別プロセスをの実行パスを取得...
-
CreateObjectで作成したExcelの...
-
子プロセスのデバッグ方法について
-
警告『 別のプロセスで使用され...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バックグラウンドのプロセスの...
-
explorer.exeが異様にメモリを食う
-
タスクマネージャーのプロセス...
-
C#でのbatファイル実行結果取得
-
プロセスのアタッチ・デタッチ...
-
VB6.0 SHELLで起動...
-
プロセスIDからウィンドウハ...
-
Process.Startの戻り値を後で取得
-
ウィンドウのタイトルからプロ...
-
他のEXEが起動しているかの確認
-
ADOでアクセスのレコードに...
-
怪しいプロセス教えてください。
-
別のプロセスの関数を呼び出す...
-
C++のプログラムをバックグラウ...
-
Linuxでのスレッド間メッセージ...
-
C++でシェルを起動
-
プロセスIDの取得方法について
-
OSPFでプロセスを分ける意義に...
-
非表示になったエクセルは?
-
Windowsでのfork方法
おすすめ情報