multithreading - 多线程线程控制

标签 multithreading visual-c++

如何控制程序正在处理的线程数?

我有一个现在可以进行多线程处理的程序,但是一个问题是该程序占用大量内存,并且我必须限制正在运行的线程数,这样我才不会用完内存。主程序经过处理,并在挂起状态下创建一堆句柄和相关联的线程。

我希望程序激活一定数量的线程,当一个线程完成时,它将自动取消挂起下一线程,直到所有工作完成。我该怎么做呢?

曾经有人提到过有关使用线程处理程序的内容,但是我似乎找不到任何有关如何编写一个或确切如何工作的信息。

如果有人可以提供帮助,将不胜感激。

使用Windows和Visual C++。
注意:我不必担心线程访问的传统问题,每个线程都是完全独立的,它更像是批处理,而不是真正的多线程程序。

谢谢,

-法肯

最佳答案

不要显式创建线程。创建一个线程池,请参阅Thread Pools并使用QueueUserWorkItem将您的工作排队。线程池的大小应由可用的硬件线程数(内核数和超线程比例)以及工作项执行的CPU与IO的比例确定。通过控制线程池的大小,您可以控制最大并发线程数。

关于multithreading - 多线程线程控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2170155/

相关文章:

c++11 - 具有模板化返回类型的虚拟成员函数的实例化

excel - C++ 未处理的异常 - 堆已损坏

c++ - 视觉 C++,链接 : fatal error LNK1104: cannot open file

c++ - RFX_BigInt 错误

multithreading - 为什么 java.util.HashMap.getEntry 可以阻止我的程序?

c++ - 多线程和多进程的性能差异

Java 线程池执行器

c++ - 如何在 Visual Studio 中更改 C++ 标准库实现

c++ - gcc -lpthread 不工作

vb.net - VB窗体跨线程方法调用带参数