Windows系统中一个进程可以允许最大的线程数

默认情况下,一个线程的栈要预留1M的内存空间

而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程

但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小。

你也可以通过连接时修改默认栈大小,将其改的比较小,这样就可以多开一些线程。

如将默认栈的大小改成512K,这样理论上最多就可以开4096个线程。

即使物理内存再大,一个进程中可以起的线程总要受到2GB这个内存空间的限制。

比方说你的机器装了64GB物理内存,但每个进程的内存空间还是4GB,其中用户态可用的还是2GB。

如果是同一台机器内的话,能起多少线程也是受内存限制的。每个线程对象都要站用非页面内存,而非页面内存也是有限的,当非页面内存被耗尽时,也就无法创建线程了。

如果物理内存非常大,同一台机器内可以跑的线程数目的限制值会越来越大。

在Windows下写个程序,一个进程Fork出2000个左右线程就会异常退出了,为什么?这个问题的产生是因为windows32位系统,一个进程所能使用的最大虚拟内存为2G,而一个线程的默认线程栈StackSize为1024K(1M),这样当线程数量逼近2000时,2000*1024K=2G(大约),内存资源就相当于耗尽。如果你的服务器端程序设计成:来一个client连接请求则创建一个线程,那么就会存在2000个限制(在硬件内存和CPU个数一定的情况下)。

更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/Delphi/

时间: 2024-09-29 22:03:13

Windows系统中一个进程可以允许最大的线程数的相关文章

Windows系统中常用网络命令及命令实例详解

  1.最基本,最常用的,测试物理网络的 PING ping 192.168.0.8 -t ,参数-t是等待用户去中断测试 2.查看DNS.IP.Mac等 A.Win98:winipcfg B.Win2000以上:Ipconfig/all C.NSLOOKUP:如查看河北的DNS C:>nslookup Default Server: ns.hesjptt.net.cn Address: 202.99.160.68 >server 202.99.41.2 则将DNS改为了41.2 > p

解决Windows系统中explorer.exe出错

问题 原来的时候用WindowsXp Sp2系统,但经常出现explorer.exe出错,点确定之后就变蓝屏了,只好冷启动.现在我把系统重装了,装sp1的,但发现这个sp1的系统却是点什么程序都是出错,将发送报告.偶尔就出现explorer.exe出错,但点确定之后不会蓝屏幕. 这样是不是什么最 新的病毒症状?另外我发现有一个盘里出现一个文件夹,文件名很长b2e4p8erk8687等由数字和字母组成,点进去 里面是一个common文件夹,还有什么sp2,sp1等一些程序和一些dll文件,我把盘格

Windows系统中的文件搜索方法与技巧

window|技巧 随着电脑硬盘价格的下降和人们经济水平的提升,许多朋友都拥有大容量的硬盘,由此里面存放的文件就越来越多,这让电脑成为一个知识库,许多文件都可以从里面找到.但是这也带来一个问题,当我们要寻找以前看过的某个文件时,如果记不清楚它的位置了找起来会很麻烦,这个时候,采用适当的搜索办法来提高搜索效率是必不可少的.在windows系统中自带了一个搜索功能,真正利用好这个功能对我们的搜索功能有很大的帮助. 充分使用搜索选项 当我们查找一个文件搜索过程结束之后,如果搜索的结果非常多,这个时候就

Windows系统中配置域控制器时别忽视DNS设置

域控制器是公司网络管理的核心,它出现故障往往会导致全网用户计算机的登录失败.不过,大家在建立域控制器时往往忽视了对DNS的设置,致使域中的DNS频频引发故障.你是否知道DNS的重要性呢?如果DNS设置出问题会带来什么样的后果呢?笔者负责公司服务器的维护工作,最近在实际工作中就遇到了一起突发的与DNS相关的服务器故障. 故障现象 公司规模不是很大,大概有50多台计算机,购买了两台IBM服务器.由于内部使用的某个应用软件需要Windows域的支持,所以在这两台IBM服务器上启用了windows 20

用快照枚举当前系统中所有进程

如何用快照枚举当前系统中所有进程,近来问这个问题的朋友比较多,所以干脆贴上来算了.呵呵.:D 在窗体上添加一个ListView,设置其ViewStyle为vsReport,在ListView上添加三个Column,再添加一个Button. #include <tlhelp32.h>#include "stdio.h"void __fastcall TMainForm::Button1Click(TObject *Sender){ // Find each process a

Linux系统中的进程管理简介

在Linux系统里,当前正在运行的程序实例称为进程.比如,当你启动Apache的时候,系统会为它分配一个进程ID.然后就可以用这个ID监视和控制这个程序. 进程监视和控制是任何Linux系统管理员的核心任务.一个管理员可以终止("kill").重启一个进程,甚至可以为它指定一个不同的优先级.标准的Linux命令"ps"和"top"通常用于查看当前的进程列表.下面我来说明如何用这些命令和其它命令来管理Linux系统中的进程. 用ps监视进程 一个监

windows系统中的hosts文件被劫持该怎么办?

  hosts文件被劫持,上网就会异常,打不开正常的网站,还会打开不良网站. 1.hosts文件是一个没有扩展名的文件,通常的路径在C:Windowssystem32driversetc文件夹内. 该文件的作用是加快域名解析,尤其是经常访问的网站,用户可以通过在Hosts中配置域名和IP的映射关系,提高域名解析速度.由于有了映射关系,输入域名计算机就能很快解析出IP,而不用请求网络上的DNS服务器.由此可见hosts权限要高于DNS服务器解析.正因为这个缘故,往往会被病毒.木马.不良程序所劫持而

Windows系统中修改MAC地址实用技巧

所谓的mac地址就是一个主机会有一个IP地址,而每个网络位置会有一个专属于它的MAC位址.如果有需要的话也可以修改它,那么如何在Windows系统中修改MAC地址呢? 1.在"HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass4D36E972- E325-11CE-BFC1-08002BE10318000.0001.0002"等主键下, 因为你有可能安装了不止一块网卡,所以在这个主键下可能会有多个类似于"0000.000

Windows系统中打开CMD并定位到指定文件夹

  Windows系统中打开CMD并定位到指定文件夹 手动添加注册表项 打开注册表编辑regedit,且定位至HKEY_CLASSES_ROOTDirectoryshell 在shell下新建一个项(目录),命名为OpenCmd 在OpenCmd下新建一个项(目录),名为command 给command下面那个ab图标的,REG_SZ类型的值,设置为 cmd.exe /k pushd %L 直接导入注册表文件 上述步骤,也可通过导入注册表的方式来实现统一功能. 把下面的内容: Windows R