スレッドで動作するプログラムがあります。 Windows 10のプロセスごとの最大スレッド制限は何ですか、またはWindows 10が処理できる最大スレッドは何ですか?
明示的な上限ではなく、他の問題が発生します。 Raymond Chenによって説明されているように 、すべてのスレッドは、ブックキーピングのために、特にスタック(スレッドがプログラムの実行中にある場合)にいくらかのメモリを必要とします。 32ビットプロセスは4GBのメモリしかアドレス指定できません。これは、スレッドあたりのデフォルトの1 MBスタック割り当てで約2,000スレッド、またはスレッドあたり64KBの最小割り当てで約12,000に適合します。 64ビットプロセスにはアドレス空間の問題はありませんが、実際の割り当てに問題があります。 testlimit64 -t
が作成された270,000スレッドを通過した後、システムのメモリが少し不足します。
ただし、プログラムはそのような制限に近づいたり、心配したりする必要はありません。以前にリンクされた投稿を引用する(壊れたリンクを修正):
「クライアントごとに1つのスレッド」モデルは、12クライアント程度を超えて拡張しないことでよく知られています。それ以上の数のクライアントを同時に処理する場合は、スレッドをクライアント専用にする代わりに、オブジェクトを割り当てるモデルに移行する必要があります。 [...] Windowsは、スレッドベースのモデルから作業項目ベースのモデルへの変換を支援するために I/O完了ポート および スレッドプール を提供します。