可以创建的最大线程数是多少?多线程时是不是需要考虑系统配置[关闭]
Posted
技术标签:
【中文标题】可以创建的最大线程数是多少?多线程时是不是需要考虑系统配置[关闭]【英文标题】:What is the maximum number of thread that can be created ? Does system configuration need to be considered when multiThreading [closed]可以创建的最大线程数是多少?多线程时是否需要考虑系统配置[关闭] 【发布时间】:2013-05-03 07:25:29 【问题描述】:我可以为我的算法创建的最大线程是多少?使用多线程时是否需要考虑系统配置?
我的硬件:Intel(R) Core (TM)2 Duo CPU E8400 @3.00 GHz 2.00 GHz
安装的内存:4.00 GB
我可以在我的项目中创建/或使用多少个最大线程?
【问题讨论】:
【参考方案1】:Windows 对线程数没有“硬编码”限制(我看到你用 Visual c++ 标签标记了这个问题,所以它是关于 Windows 的,对吗?)。 您只需要考虑您的硬件限制;首先,默认线程堆栈大小为 1 兆字节,因此当您创建线程时,您至少需要 1 兆字节的内存仅用于堆栈,此外,您的自定义代码很可能会分配一些内存。对于操作系统来说,上下文切换也不是一件容易的事。除非线程必须等待诸如 HTTP 请求之类的长时间操作,否则创建比处理器内核数更多的线程通常是没有意义的。 因此,理想情况下,您必须在创建线程之前三思而后行,但如果您确定需要线程,则不要关心内存和 CPU 时间以外的任何限制。
【讨论】:
【参考方案2】:这是If you have to ask, you're probably doing it wrong的经典案例。创建线程会带来成本,并且您/操作系统很快就会花费更多时间来管理线程,而不是从并行化任务中获得的时间。
最好的方法是确定 CPU 的数量并将创建的线程数限制为 CPU 的数量。 CPU 是指硬件执行单元。
【讨论】:
以上是关于可以创建的最大线程数是多少?多线程时是不是需要考虑系统配置[关闭]的主要内容,如果未能解决你的问题,请参考以下文章