質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MFC

MFC (Microsoft Fouondation Class)とは、MicrosoftがVC++用に開発したWindows用アプリケーションのフレームワークです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

837閲覧

プロセスとスレッドの違いがいまいちしっくりこない

tanukitii

総合スコア44

MFC

MFC (Microsoft Fouondation Class)とは、MicrosoftがVC++用に開発したWindows用アプリケーションのフレームワークです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

1クリップ

投稿2018/08/12 04:14

スレッドの考え方でいまいちしっくりきていない部分があるのでどなたか教えていただけないでしょうか。

【状況設定】
1.ダイアログ上にファイルを読み込むためのボタンと,読み込みを一時停止するボタンを設定。
2.ファイルを読み込むとプログレスバーが表示され,ファイルをどれくらい読み込んでいるか分かるようにする。
3.大きな容量のファイルを読み込む。

【動作結果】
スレッドを使用しないでこの操作をすると,途中で一時停止ボタンをクリックしても読み込みが止まりません。スレッドを使用するとちゃんと停止してくれます。

【質問】
プロセスは大きな容量のファイルを処理すると,操作を停止するような処理を同時に実行できなくなります。そこでスレッドというプロセスの分身のようなものをつくり手伝ってもらう,という説明を本で読みました。
意味は分かるのですが,それなら複数のプロセスが役割を分担して,処理をすれば良いのではないだろうかと思ってしまいます。プロセスとスレッドには根本的に何か異なる部分があるのでしょうか。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

解決済みですが。

多少定義による揺らぎはありますが、大体は以下のとおりです。

スレッド:プログラムごとに割り当てられた一つの仮想CPU
プロセス:プログラムごとに割り当てられた一つ以上の仮想CPUと固有メモリ空間のセット

ですので、プロセスの中にスレッドが一つ以上あります。そしてスレッドは単独では記憶領域(レジスタなどを除く)を持たず、演算機能のみを持ちます。一つのプロセスでマルチスレッド処理をすれば、記憶領域を共有する仕組みを簡単に作ることができます。一方、マルチプロセス処理の場合は、記憶領域が別個のものとなるため、データ交換が別途必要となります。

投稿2018/08/13 13:15

HogeAnimalLover

総合スコア4830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanukitii

2018/08/13 17:02

スレッドやプロセスについて理解が深まりました。 ご回答誠にありがとうございます。
guest

0

マルチスレッド>同一メモリ空間でスレッドが複数動く
マルチプロセス>別メモリ空間で、プロセスが複数動く

マルチスレッドでしかできないこともありますし、マルチプロセスでしかできないこともあります。

投稿2018/08/12 14:28

y_waiwai

総合スコア87747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanukitii

2018/08/12 17:13

ご回答誠にありがとうございます。 マルチプロセスでしかできないこともあるのですね。少しその辺は調べてみようと思います。
guest

0

ベストアンサー

プロセスとスレッドには根本的に何か異なる部分があるのでしょうか。

"根本的"とは如何なる意味かわかりませんが、プロセスはスレッドの一種です。

それなら複数のプロセスが役割を分担して,処理をすれば良いのではないだろうかと思ってしまいます。

それでも良いですよ。
ただし複数のプロセスはそれぞれ別のメモリ空間で動くので
プロセス間のデータのやりとりが面倒で遅くなります。
※ 役割を分担するからにはデータのやりとりは避けられませんからねぇ...

投稿2018/08/12 04:28

編集2018/08/12 04:32
episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tanukitii

2018/08/12 04:50

確かに,複数プロセスはそれぞれ別のメモリ空間で動いているので, データのやりとりをしようとすると必然的に処理時間が長くなりますね…。 ありがとうございます。もやもやが解消されました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問