可以创建的最大线程数是多少?多线程时是不是需要考虑系统配置[关闭]

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 是指硬件执行单元。

【讨论】:

以上是关于可以创建的最大线程数是多少?多线程时是不是需要考虑系统配置[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

tomcat支持多少并发

Tomcat 支持多少并发量

MYSQL 支持的最大并发线程数是多少

springboot内置tomcat并发多少

读写硬盘的线程数是多少?

tomcat并发