すべては完全に理論的なものであり、質問が頭に浮かんだだけで、答えが何であるかは完全にはわかりませんでした:
4 つの独立した計算を計算するアプリケーションがあるとします。(完全に独立しており、どの順序で実行しても問題ありません。別の計算を行う必要はありません)。また、これらの計算は長時間 (分) であり、CPU バウンド (いかなる種類の IO も待機していない) であると仮定します。
1) ここで、1 プロセッサのコンピューターを使用している場合、シングル スレッド アプリケーションはマルチスレッド アプリケーションよりも論理的に高速になります (または同じです)。コンピュータは 1 つのプロセッサで一度に複数のことを実行できないため、コンテキストの切り替えなどで時間を「無駄」にします。ここまでは順調ですね?
2) 4 プロセッサのコンピュータを使用している場合、4スレッドの方がシングル スレッドよりも高速です。右?コンピューターは一度に 4 つの操作を実行できるようになったため、アプリケーションを 4 つのスレッドに分割するのは論理的であり、4 つの計算のうち最長の時間で完了するはずです。ここまではまだいいの?
3) そして今、私が混乱している実際の部分 - 利用可能なプロセッサ (実際には - コア) の数よりも多くのスレッドをアプリケーションに作成させるのはなぜですか? 私はプログラムを作成し、数十から数百のスレッドを作成するアプリケーションを見てきましたが、実際には、平均的なコンピューターの場合、完璧な数は約 8 でしょうか?
PS私はすでにこれを読んでいます:スレッド対シングルスレッド ですが、静かに答えませんでした。
乾杯