进程在Windows中可以拥有的最大线程数是多少

时间:2013-05-23 09:56:09

标签: c++ multithreading

在Windows进程中,一次使用的线程有任何限制。如果是这样,每个进程可以使用的最大线程数是多少?

2 个答案:

答案 0 :(得分:10)

我知道没有限制,但有两个实际限制:

  1. 堆栈的虚拟空间。例如,在32位中,该过程的虚拟空间是4GB,但是只有大约2G可用于一般用途。默认情况下,每个线程将保留1MB的堆栈空间,因此最高值为2000个线程。当然,您可以更改堆栈的大小并使其更低,以便更多线程适合(dwStackSize中的参数CreateThread或链接器命令中的选项/STACK。如果你使用的是64位系统,这个限制几乎会消失。
  2. 调度程序开销。一旦你阅读了数千个线程,只需安排它们就会占用近100%的CPU时间,所以无论如何它们都是无用的。这不是一个硬限制,只是你创建的线程越多,程序就会越来越慢。

答案 1 :(得分:2)

实际限制由可用内存量以各种方式决定。 Windows中没有“你不能超过这么多”线程或进程的限制,但是你可以在系统中使用多少内存是有限制的,当它耗尽时,你无法创造更多线程。

请参阅Mark Russinovich撰写的此博客: http://blogs.technet.com/b/markrussinovich/archive/2009/07/08/3261309.aspx