在 Windows 进程中,一次使用的线程是否有任何限制。如果是这样,每个进程可以使用的最大线程数是多少?
最佳答案
据我所知没有限制,但有两个实际限制:
- 堆栈的虚拟空间。例如,在 32 位中,进程的虚拟空间为 4GB,但只有大约 2G 可用于一般用途。默认情况下每个线程将保留 1MB 的堆栈空间,因此最高值为 2000 个线程。当然,您可以更改堆栈的大小并将其降低,以便可以容纳更多线程(
CreateThread
中的参数dwStackSize
或选项/STACK
链接器命令)。如果您使用 64 位系统,此限制实际上会消失。 - 调度程序开销。一旦你读取了数千个线程,仅仅调度它们就会消耗你近 100% 的 CPU 时间,所以无论如何它们大多是无用的。这不是硬性限制,只是您创建的线程越多,您的程序就会越慢。
关于c++ - 一个进程在windows中可以拥有的最大线程数是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16710849/