注意:我对使用线程池不是很熟悉,这从下面的代码中可能很明显。我的印象是我可以将许多值推送到这个队列中,然后它会等待一个线程完成然后移动到下一个线程,系统将处理要运行的线程数的同步。
我正在尝试使用 ThreadPool::QueueUserWorkItem(waitcallback, num) ,其中 num 的值根据某些先前的算法迭代到动态值。我遇到的问题是程序在它变得太高时崩溃。
WaitCallback^ wcb = gcnew WaitCallBack(this, &createImage);
for(int i = 0; i < numBlocks; i++)
{
ThreadPool::QueueUserWorkItem(wcb, i);
}
我收到消息“运行时错误!此应用程序已请求运行时以不寻常的方式终止它。请联系应用程序的支持团队以获取更多信息。”
我最反感的是 numBlocks = 644。