source3最適な数は、単にプロセッサ数です。コンテキスト切り替えとそれに伴うオーバーヘッドを最小限に抑えるために、常に1つのスレッドをCPU(論理的または物理的)上で実行するのが最適です。それが正しい数であるかどうかは、あなたがしていることによります。スレッドプールは(私が正しく理解していれば)できるだけ少ないスレッドを使用しようとしますが、スレッドがブロックするたびに別のスレッドをスピンアップします。ブロッキングは決して最適ではありませんが、何らかの形でブロッキングを行っている場合、答えは劇的に変わります。良い(必ずしも最適ではない)動作を実現するための最も簡単で簡単な方法は、スレッドプールを使用することです。私の意見では、スレッドプールよりもうまくやるのは本当に難しいので、単に開始するのに最適な場所であり、それが十分ではない理由を示すことができるのであれば、他のことについて考えることができます。source2唯一の方法は、パフォーマンスデータに基づくデータとコード分析の組み合わせです。メモリ速度とシステム上の他のアクティビティとのすべてが、チューニングを異なるものにします。潜在的にはいくらかの自己調整が可能ですが、これは何らかの形のライブパフォーマンスの調整と自己調整を持つことを意味します。Taskインスタンスを使用します。4.0フレームワークの基盤の上に構築されており、タスクをできるだけ効率的に実行するために最適なスレッド数を実際に決定します。この質問に受け入れられた答えを見てください)。簡単な答えは、オペレーティングシステムに決めさせることです。それはあなたができるよりも何が最適であるかを決めるというはるかに良い仕事をすることができます。「最適な数のスレッド」を検索すると(引用符は含みません)、数ページの結果が得られます。source1http://msdn.microsoft.com/ja-jp/library/system.environmentのいずれかを使用して、サーバーアプリケーションを作成した後にCPUからすべて使用できる場合は、実行している内容によっても異なります。[Environment.ProcessorCount]またはスレッドプールは良い考えです。これがデスクトップまたはこのタスク専用ではないマシンで実行されている場合は、マシンがユーザーのために「機能する」ように、CPUをアイドル状態にしておくことをお勧めします。source0最良のスレッド数を選択する本当の方法は、アプリケーションが自分自身をプロファイリングし、最適なパフォーマンスが得られるものに基づいてそのスレッド化動作を適応的に変更することです。0related仮にあったとしても、Erlangプロセスはどのようにカーネルスレッドにマッピングされるのでしょうか。