c++ - 一个进程在windows中可以拥有的最大线程数是多少

标签 c++ multithreading

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

最佳答案

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

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

关于c++ - 一个进程在windows中可以拥有的最大线程数是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16710849/

相关文章:

c++ - 如何检测跨平台浮点行为的差异

c++ - 3d 数组在内存中是否连续,那么 2d 呢?

c++ - 互斥作为类成员

java - 使用多个线程将顺序上传并行到 s3 中?

multithreading - 在 O(1) 时间内按降序提取元素的最佳数据结构是什么

Python - 通知子进程阻塞的另一个线程

c++ - 用于插入的高效数据结构

c++ - 在接受+0.0或-0.0的同时,比较 double 和精确值0的最快方法

c++ - scanf 没有接受 long double

Java padding 性能破坏