注意: 私は、次のコードから明らかなように、スレッドプールの操作にあまり慣れていません。このキューに多くの値をプッシュし、1 つのスレッドが完了するのを待ってから次のスレッドに移動し、システムが実行中のスレッド数の同期を処理できるという印象を受けました。
ThreadPool::QueueUserWorkItem(waitcallback, num) を使用しようとしていますが、以前のアルゴリズムに応じて num の値が動的な値まで反復されます。私が直面している問題は、プログラムが高くなりすぎるとプログラムがクラッシュすることです。
WaitCallback^ wcb = gcnew WaitCallBack(this, &createImage);
for(int i = 0; i < numBlocks; i++)
{
ThreadPool::QueueUserWorkItem(wcb, i);
}
「ランタイム エラーです。このアプリケーションはランタイムに通常とは異なる方法で終了するよう要求しています。詳細については、アプリケーションのサポート チームにお問い合わせください。」というメッセージが表示されます。
私が最後に実行したのは numBlocks = 644 でした。