重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

マルチスレッドとマルチプロセスはどこか違うのですか?どっちが動作がより速いくシングルコア処理とマルチスコアの処理ゲームのfpsがより高くて処理か早くなりますか?メリットデメリットは何でしょうか?

A 回答 (3件)

マルチスレッドは1つのプロセスでCPUのコアを複数(スレッド数分)使用する


マルチプロセスは名前の通りプロセスを複数起動しCPUのコアを複数(プロセス数分)使用する
といったイメージです

効率が良いのはマルチスレッドの方ですね

多くのアプリはマルチスレッドですが、
有名なのですとWindows標準のEdgeブラウザがマルチプロセスになっています
タスクマネージャーで見るとアクティブなタブの数だけEdge.exeが起動しているのが分かるかなと思います

どちらも複数のCPUコアを使えるので、Corei7やi9などコア数の多いCPUでよりパフォーマンスが発揮しやすくなります

マルチスレッドの方はメリットとしては1つのプロセスで良いので、アプリの作成も難易度が低く、メモリーも1つのプロセスで済むのでパフォーマンスがでやすいです

マルチプロセスの方はプロセス同士は影響が少ないので、何か一つのプロセスに問題があってもアプリ全体はエラーにならない安定面でメリットがあります、
先ほどのEdgeでいうと一つの開いているページに何らかの異常があると全ページエラーで停止すると困りますよね、それが防げます
    • good
    • 0
この回答へのお礼

お答えありがとうございます

お礼日時:2025/03/17 18:46

スレッドはプロセスの中で同時処理できる分割単位になります。


プログラム中のプロセスがスレッド分割されてないものはシングルスレッドと言われます。

実際に動かす場合、シングルスレッドでは単一のCPUコアでしか実行できないのに対して、マルチスレッドでは複数のコアで同時に分散処理ができるので、マルチスレッドにする方が高速処理しやすくなります。

いずれにしても、マルチスレッドにするかはプログラム開発者の設計方法によるので、ユーザーの手でシングルスレッドからマルチスレッドに変えることはできません。
    • good
    • 0
この回答へのお礼

お答えありがとうございます

お礼日時:2025/03/17 18:47

私はどちらの形態のプログラムも製作した経験があります(他人に誇れるほどの経験ではありませんが)。

私自身CPUの動きとかメモリの取り扱い、等のハードウエア上の詳細知識は有りませんが、プログラム実行時の形態が異なりはするものの、実行速度の違いとか、「どちらが効率的であるか。」等を意識するのはあまり意味がないと思います。

1.スレッド
プログラムを起動すると、それを親スレッドとして、子供スレッドを幾つも作成していきます。

+------------------------+
|親 ス レ ッ ド(親メモリ)|
+------------------------+
 | | | | |
 | | | | |
 子 子 子 子 子
 ス ス ス ス ス
 レ レ レ レ レ
 ッ ッ ッ ッ ッ
 ド ド ド ド ド
 1 2 3 4 5

重要なのはメモリで、子スレッドが持つメモリを別のスレッドが参照書き換えするのはできない(多分)ので、親スレッドが持つメモリを全スレッドで使いまわします。

2.マルチタスク(プロセス)
共有メモリなる特別なメモリ領域を作成し、各タスク(プロセス)に位置を教えてやります。

+--+
|共|--タスク(プロセス)1
|有|
|メ|--タスク(プロセス)2
|モ|
|リ|--タスク(プロセス)3
+--+

どちらの方式も複数のスレッドやタスクが同じメモリを同時に書き換えたりしないよう、排他制御の機能を構築しなければなりません。
それで、スレッド方式は便利なライブラリが提供されていますので、それを使えば比較的簡単に実現できます。Windowsプログラミングに於いては100%のプログラマがスレッド方式を採用すると思います。Windowsで共有メモリを作れたかどうか私には記憶がありません。
一方の共有メモリ方式は現在のCPU形式(マルチコア)でなく、恐らく文字どおりのマルチCPUの時代にできた古い形式だと思います。現在のLinuxでも共有メモリは簡単に作成できますが、Linuxに於いてもプログラマの多くはスレッド方式を採用すると思います。

結論としてプログラム実行時の効率や機能の観点から2つの方式があるわけでなく、古い方式/新しい方式、或いはプログラミングのやりやすさから現在では殆どスレッド方式と考えるべきだと思います。
    • good
    • 0
この回答へのお礼

お答えありがとうございます

お礼日時:2025/03/17 18:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A