可以创建的最大线程数是多少?多线程时是否需要考虑系统配置

时间:2013-05-03 07:25:29

标签: c++ windows multithreading visual-c++ image-processing

我可以为算法创建的最大线程是多少?使用MultiThreading时是否需要考虑系统配置?

我的硬件:Intel(R)Core(TM)2 Duo CPU E8400 @ 3.00 GHz 2.00 GHz

已安装的RAM:4.00 GB

我可以在项目中创建/使用多少个最大线程?

2 个答案:

答案 0 :(得分:5)

Windows对线程数没有“硬编码”限制(我看到你用visual c ++标记标记了这个问题,所以它是关于Windows的,这是正确的吗?)。 您只需要考虑硬件限制;首先,默认的线程堆栈大小是1兆字节,所以当你创建线程时,你至少需要1兆字节的内存只是为了堆栈,另外很可能你的自定义代码会分配一​​些内存。对于操作系统而言,切换也不容易。除非线程必须等待HTTP请求之类的长时间操作,否则通常创建的线程数多于处理器核心数。 因此,理想情况下,您必须在创建线程之前仔细考虑,但如果您确定需要线程,则不要关心除内存和CPU时间之外的任何限制。

答案 1 :(得分:0)

这是If you have to ask, you're probably doing it wrong的经典案例。创建线程会带来成本,而您/操作系统很快就会花费更多的时间来管理线程,而不是通过并行化任务获得的。

最佳方法是确定CPU数量并将创建的线程数限制为CPU数量。 CPU是指硬件执行单元。