我可以为我的算法创建的最大线程是多少?使用多线程时是否需要考虑系统配置?
我的硬件:Intel(R) Core (TM)2 Duo CPU E8400 @3.00 GHz 2.00 GHz
安装内存:4.00 GB
我可以在我的项目中创建/或使用多少个最大线程?
我可以为我的算法创建的最大线程是多少?使用多线程时是否需要考虑系统配置?
我的硬件:Intel(R) Core (TM)2 Duo CPU E8400 @3.00 GHz 2.00 GHz
安装内存:4.00 GB
我可以在我的项目中创建/或使用多少个最大线程?
Windows 对线程数没有“硬编码”限制(我看到你用 Visual c++ 标签标记了这个问题,所以它是关于 Windows 的,对吗?)。您只需要考虑您的硬件限制;首先,默认线程堆栈大小为 1 兆字节,因此当您创建线程时,您至少需要 1 兆字节的内存仅用于堆栈,此外,您的自定义代码很可能会分配一些内存。对于操作系统来说,上下文切换也不是一件容易的事。除非线程必须等待像 HTTP 请求这样的长时间操作,否则创建比处理器内核数更多的线程通常是没有意义的。因此,理想情况下,您必须在创建线程之前三思而后行,但如果您确定需要线程,则不要关心内存和 CPU 时间以外的任何限制。
这是一个经典案例,如果你不得不问,你可能做错了。创建线程会带来成本,并且您/操作系统很快就会花费更多的时间来管理线程,而不是从并行化任务中获得的时间。
最好的方法是确定 CPU 的数量并将创建的线程数限制为 CPU 的数量。CPU是指硬件执行单元。