0

vs2012 で正しく動作するマルチスレッド コードを作成しました。驚いたことに、10000 近くのスレッドをデタッチしましたが、問題なく動作しました。明らかに、その量のスレッドを同時に処理することはできないため、一部のスレッドは他のスレッドが機能するまで中断されます。

vs2012 に、同時に動作できるスレッドの最大数を設定するオプションがあるかどうかを知りたいです。これは、スレッドの切り替えで時間を無駄にしないために特に必要です。
また、スレッドが使用できるメモリの総量を管理したいと考えています。

前もって感謝します。

4

3 に答える 3

3

ハードウェア スレッドよりも多くのスレッドが必要ない場合は、最大std::thread::hardware_concurrencyスレッドでのみ生成します。

ただし、場合によっては、I/O やその他の原因で作業がブロックされることがある場合は、オーバーサブスクリプションが適切な場合があります。

メモリ管理に関しては、これは C++ であり、使用するメモリの量と解放するタイミングをほぼ完全に制御できます。スレッドは、スレッドで実行する関数が必要とするメモリのみを使用します (一部の内部オーバーヘッドは別として)。

于 2013-04-27T12:08:38.520 に答える