如何控制程序正在处理的线程数?
我有一个现在可以进行多线程处理的程序,但是一个问题是该程序占用大量内存,并且我必须限制正在运行的线程数,这样我才不会用完内存。主程序经过处理,并在挂起状态下创建一堆句柄和相关联的线程。
我希望程序激活一定数量的线程,当一个线程完成时,它将自动取消挂起下一线程,直到所有工作完成。我该怎么做呢?
曾经有人提到过有关使用线程处理程序的内容,但是我似乎找不到任何有关如何编写一个或确切如何工作的信息。
如果有人可以提供帮助,将不胜感激。
使用Windows和Visual C++。
注意:我不必担心线程访问的传统问题,每个线程都是完全独立的,它更像是批处理,而不是真正的多线程程序。
谢谢,
-法肯
最佳答案
不要显式创建线程。创建一个线程池,请参阅Thread Pools并使用QueueUserWorkItem将您的工作排队。线程池的大小应由可用的硬件线程数(内核数和超线程比例)以及工作项执行的CPU与IO的比例确定。通过控制线程池的大小,您可以控制最大并发线程数。
关于multithreading - 多线程线程控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2170155/