基本的に、Task クラスと Thread クラスがあり、物理コア (または Intel CPU コアではカウントが 2 倍になるため、論理コア) の量に等しいスレッドを作成します。
したがって、基本的にスレッドはタスクのリストからタスクを取得して実行します。ただし、すべてが安全であることを確認する必要があり、複数のスレッドが同じタスクを一度に取得しようとしないため、もちろんこれにより余分なオーバーヘッドが発生します (および頭痛の種)。 .
タスク機能をスレッド内に配置する理由は?つまり、4 つのスレッドが 200 のタスクのプールからタスクを取得する代わりに、200 のスレッドが 4 x 4 のグループで実行されるのではなく、基本的に何も同期する必要がないということです。ロック、何もありません。もちろん、初期化時だけで、ランタイム全体でスレッドを作成することはありません。
このような方法にはどのような長所と短所がありますか?私が考えることができる 1 つの問題は、初期化時にしかスレッドを作成しないため、スレッドの数は固定されていますが、タスクを使用すると、タスク プールにさらに多くのタスクをダンプし続けることができます。