Windowsプロセスでは、一度に使用されるスレッドに制限があります。そうであれば、プロセスごとに使用できるスレッドの最大数はいくらですか?プロセスがウィンドウ内に持つことができるスレッドの最大数は何ですか?
答えて
は、私の知っている制限はありませんが、二つの実用的な限界がある:スタックのための
- 仮想空間。例えば、32ビットでは、プロセスの仮想空間は4GBですが、一般的な使用には約2Gしか使用できません。デフォルトでは、各スレッドは1MBのスタック領域を確保するため、最高値は2000スレッドです。当然ながら、スタックのサイズを変更してスレッド数を減らすことができます(パラメータ
dwStackSize
はCreateThread
、リンカコマンドのオプションは/STACK
)。 64ビットシステムを使用する場合、この制限は事実上消えます。 - スケジューラオーバーヘッド。何千ものスレッドを読んだら、スケジューリングするだけでCPU時間の100%近くを食べるので、とにかく役に立たない。これは厳しい制限ではなく、作成するスレッドの数が増えるにつれてプログラムが遅くなり、遅くなります。
まあ、スレッドの状態に依存します。 6000のブロックされたスレッドは、私のマシンの動作に影響しません。また、たとえスレッドが準備完了/実行中であったとしても、16スレッドまたは1600を持っていれば大したことになりません。どちらの場合でも4/8コアが最大になります。 –
@MartinJames:カーネルスケジューラがスレッドテーブルのサイズで次のスケーリングを実行するかどうかを決定するために使用するアルゴリズムです。間違いなく、詳細はWindowsのバージョンによって異なりますが、私はWinXPで 'for(); Sleep(1000)'だけで2000スレッドを作成し、CPU使用率は80%を超えたことを覚えています。 – rodrigo
IIRCでは、readdtスレッド構造は、基本的にスレッド情報ブロックポインタの優先度順のキューの配列です。 1つのキューに2000個のエントリがあるがコアが4つしかない場合は、タイマー割り込みでスレッドの周りをシャトルするだけで、「古い」4つのスレッドをバックでプッシュし、4つの「新しい」スレッドを前面からポップする必要があります。待ち行列が長い。それは長くかかることはありませんか? –
実際の制限は、さまざまな方法で使用可能なメモリの量によって決まります。 Windowsでは、「これ以上多くのスレッドやプロセスを持つことはできません」という制限はありませんが、システム内で使用できるメモリの量には限界があります。スレッド。
マークRussinovich氏によるこのブログを参照してください: http://blogs.technet.com/b/markrussinovich/archive/2009/07/08/3261309.aspx
- 1. Swiftのメソッドが持つことができるパラメータの最大数は何ですか?なぜですか?
- 2. テーブル変数がSQL Serverに持つことができるレコードの最大数
- 3. ページがAEMに持つことができる最大のバージョンは何ですか?
- 4. 最大並行Ble接続とは何ですかandroid M +が持つことができる
- 5. スレッド同期 - プロセスの最大スレッド数
- 6. 最大ヒープサイズを大きくすると、スレッドの最大数が減少するのはなぜですか?
- 7. プロセスは複数のstdoutとstdinを持つことができますか?
- 8. 私たちが持つことができるFirebaseシャードの最大数はいくらですか?
- 9. MongoDBが持つことができるシャードの最大数はいくらですか?
- 10. SpecRunで利用できるスレッドの最大数は何ですか
- 11. 私のプログラムで持つことができるクラスの最大数はいくらですか?
- 12. Linux:プロセスが開くことができるファイルの最大数を変更するには?
- 13. Cで、あなたが持つことができる識別子の最大量はいくらですか?
- 14. 1つのCUDAカーネルで開始できるスレッドの最大数
- 15. スレッドがプロセスと共有していないことは何ですか?
- 16. スレッド内で領域を何度も初期化することに大きな欠点がありますか?
- 17. 整数の容量を持つフローグラフは、その最大フローに非整数フローを持つエッジを持つことができますか?
- 18. 最大幅と最大高を持ちながらビデオを反応させることができますか?
- 19. コンピュータが持つことができるメモリセルの最大数を確認する方法
- 20. 私が持つことができる最長の文字列は何ですか?
- 21. プロセス内で1つのスレッドがクラッシュするとどうなりますか?
- 22. どのように私はimageresizer asp.net mvcで最大のぼかしを持つことができます
- 23. ウィンドウがwpfで最大化されると、ウィンドウ内のすべてを伸ばすことができますか?
- 24. プロセス内の特定のスレッドが複数のジョブを作成することは可能ですか?
- 25. なぜ2つのスレッドを持つ8つのプロセスが、16のスレッドを持つ1つのプロセスより多くの負荷を生成するのですか?
- 26. Golang、数学/大:* big.Intの最大値が何であるか
- 27. iOSアプリケーションが複数のウィンドウを持つことは可能でしょうか?
- 28. スレッドとマルチスレッドの最大数
- 29. スレッド対プロセス:スレッド内でicmpパケットの作成が失敗する
- 30. box2d b2BodyDefはCocos2Dで大量データプロパティを持つことができますか?
あなたはhttps://www.google.de/#q=What+is+the+maximum+number+of+threads+a+process+を試してみました既に+ in + windowsを持つことができますか? –
私はこれをテストしました。私の64ビットVistaの究極のものは〜7000スレッド以上を作成することを拒否し、正確な数字を覚えることはできません。 –