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

What is the maximum number of thread that can be created ? Does system configuration need to be considered when multiThreading

本文关键字:多线程 系统配置 多少 创建 线程      更新时间:2023-10-16

我可以为我的算法创建的最大线程是什么?当我使用多线程时,需要考虑系统配置吗?

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