n個のコアでいくつのスレッドを実行する必要があるかをよりよく理解しようとしています。私はこれが複雑な質問であることを知っています。その答えは、共有状態がどれだけあるか、各スレッドがリソースをどれだけスリープして待機しているかなど、多くの要因に依存します。
簡単にするために、2 つのコアと、その作業を共有状態のないスレッドに分割できるプロセスが 1 つだけあるとします。各スレッドが、スリープもリソースの待機もせずに、計算の後に計算を実行するとします。この場合の理想的なスレッド数は 2 でしょうか?
少し複雑にして、スレッドが何らかのディスク I/O を実行する必要があるとしましょう。これは私たちの答えをどのように変えますか? この場合、2 つ以上のコアを持つことができると思います。
または、リソースのスリープや待機を行わず、代わりに、両方がアクセスできるメモリがあり、同期が必要だとします。これは私たちの答えをどのように変えますか? この場合、どの程度の同期が必要かにもよりますが、実際には 2 スレッドよりも 1 スレッドを好むかもしれません。