シングルスレッドプログラミングとマルチスレッドプログラミングの違いを誤解しているので、次の質問に答えてすべてを明確にしたいと思います。
9つの独立したタスクがあり、シングルスレッドプログラムとマルチスレッドプログラムでそれらを実行したいとします。基本的には次のようになります。
シングルスレッド:
- Execute task 1
- Execute task 2
- Execute task 3
- Execute task 4
- Execute task 5
- Execute task 6
- Execute task 7
- Execute task 8
- Execute task 9
マルチスレッド:
スレッド1:
- Execute task 1
- Execute task 2
- Execute task 3
スレッド2:
- Execute task 4
- Execute task 5
- Execute task 6
スレッド3:
- Execute task 7
- Execute task 8
- Execute task 9
私が理解しているように、一度に1つのスレッドのみが実行され(CPUを取得)、クォンタムが終了すると、スレッドスケジューラはCPU時間を別のスレッドに渡します。
では、どのプログラムが早く終了するのでしょうか?それは(論理的に)マルチスレッドプログラムですか?それともシングルスレッドプログラムですか(マルチスレッドには多くのコンテキスト切り替えがあり、時間がかかるため)?なぜ?良い説明が必要です:)