一个电脑最多能开启多少个线程?

by_封爱 版主 2013-11-15 12:02:24
比如:服务器上运行一C#的winForm程序.

Socket方面的 如果有连接就创建一个线程



var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(new IPEndPoint(IPAddress.Any, int.Parse(txt_port.Text)));
socket.Listen(10000);//不知道是干啥的 就写10000了
socket.BeginAccept(new AsyncCallback(ClientAccepted), socket);


所以在每次有连接的时候 都走了ClientAccepted然后会默认开个线程..

如果2003系统4G内存 最高可以有多少个连接?跟CPU有关系吗?

是不是电脑的线程没了 就死机了?
...全文
14885 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
香克斯的美酒 2014-12-05
  • 打赏
  • 举报
回复
电饭锅
用用婚车 2013-11-18
  • 打赏
  • 举报
回复
貌似有线程池
飞小猪 2013-11-18
  • 打赏
  • 举报
回复
引用 22 楼 gxch 的回复:
xiaozhu39505 小辉? 呵呵,在这里见到你了,好久没联系了,当时我们用 socket异步修改程序后续的情况我不是很清楚了,实际运行后对服务器的占用率有多大? 现在我又一次面对当时的情况了,是一个手机端即时通讯程序,需要连几万个客户端
哈哈,谷哥吗?当时只是测试的可连接数,没有具体测试服务器负载情况。socket异步里就使用了完成端口,用异步是效率最高的,至于负载情况,还得具体测试才行哈
gxch 2013-11-18
  • 打赏
  • 举报
回复
xiaozhu39505 小辉? 呵呵,在这里见到你了,好久没联系了,当时我们用 socket异步修改程序后续的情况我不是很清楚了,实际运行后对服务器的占用率有多大? 现在我又一次面对当时的情况了,是一个手机端即时通讯程序,需要连几万个客户端
kk5595 2013-11-18
  • 打赏
  • 举报
回复
微软操作系统的线程一共才几百个。 你想想你的程序开多了会在怎样
wyufen 2013-11-18
  • 打赏
  • 举报
回复
没有限制,但开多了很慢
showjim 2013-11-18
  • 打赏
  • 举报
回复
引用 16 楼 diaodiaop 的回复:
现在我的需求就跟你这个差不多.. 1W多个 如果在多了呢? 比如100W个下位机. 怎么办?
没有活动的异步连接,基本上只是消耗内存而已。
飞小猪 2013-11-18
  • 打赏
  • 举报
回复
引用 16 楼 diaodiaop 的回复:
[quote=引用 4 楼 xiaozhu39505 的回复:] 我之前做过一个采集的项目,下位机设备会主动TCP连接服务器,用socket异步可以保持1W多个TCP连接
现在我的需求就跟你这个差不多.. 1W多个 如果在多了呢? 比如100W个下位机. 怎么办?[/quote] 百万级别的这个就得做均衡负载了,这个可不是靠程序优化就能解决的
o0冰凉0o 2013-11-18
  • 打赏
  • 举报
回复
by_封爱 版主 2013-11-18
  • 打赏
  • 举报
回复
引用 4 楼 xiaozhu39505 的回复:
我之前做过一个采集的项目,下位机设备会主动TCP连接服务器,用socket异步可以保持1W多个TCP连接
现在我的需求就跟你这个差不多.. 1W多个 如果在多了呢? 比如100W个下位机. 怎么办?
treemo 2013-11-16
  • 打赏
  • 举报
回复
敌敌畏耶 2013-11-16
  • 打赏
  • 举报
回复
开多少线程 和你CPU 有关系···
junlinfushi 2013-11-15
  • 打赏
  • 举报
回复
一个进程可以开启的线程受可用内存限制,如果是32位的机器,那么默认一个进程有2G的可用内存,而每个线程默认分析1M的栈空间,所以这种情况下理论最线程数在2000多个。一个解决办法是创建线程时减少线程栈的大小或是使用64位的系统。64位系统应该可以忽略这个问题了。 当然受cpu及磁盘速度及物理内存的限制。不用到达上限值,你的机器应该已经是慢如牛车了。
E次奥 2013-11-15
  • 打赏
  • 举报
回复
队列!!!!!!!
  • 打赏
  • 举报
回复
socket.Listen(10000);//不知道是干啥的 就写10000了 看方法说明啊 BeginAccept并不是你想的那样执行一次开一个线程,实际情况是bind一个线程池线程,异步执行完后 会放回线程池,池内会保持几个(默认与CPU数量有关)空闲线程活动(减小频繁创建-销毁线程的开销) 池最大可运行的线程数量,可以通过System.Threading.ThreadPool.GetMaxThreads获取,相应地还有个Set方法, 一般情况不需要考虑最大数量(真到那时候加服务器吧),有些情况通过设置最少活动线程SetMinThreads来提高性能
jiaoshiyao 2013-11-15
  • 打赏
  • 举报
回复
表示一个用户一个线程。。。。
卧_槽 2013-11-15
  • 打赏
  • 举报
回复
可以开N多个,N和你的内存大小相关,但是后面的都会挂起。
showjim 2013-11-15
  • 打赏
  • 举报
回复
32位系统一个进程用户空间为2G,一个线程默认需要1M堆栈(最少128K),可以算一算极限。 服务器要么异步(系统队列),要么自己处理队列。 Accept可能没必要异步,用一个线程同步处理更好。 另外活动线程太多的话,频繁的上下文切换很耗CPU。
Null_Reference 2013-11-15
  • 打赏
  • 举报
回复
线程是个好多好东西,但不能滥用。
失落的神庙 2013-11-15
  • 打赏
  • 举报
回复
客户端同步异步都可以
加载更多回复(4)
  目前的FTP软件都是多线程的,每一个客户连接都会建立一个新的线程,而每个进程[即程序]最多大概能建立2000-4000个线程,也就是说同时最多能有2000-4000个人在线,当然要建立到那么多线程,我们家用电脑如何行通呢?当然吃不消的!CHKen FTP Server 2.0 并不是一个用户连接上就建立一个线程的,而是多个连接共用一个线程,这个可以自行设定,可以控制总共的线程数量,这样以来,当然连接数再多也不会占用太多的CPU!   CHKen FTP Server 2.0 和 CHKen Player 一样,也是同一种语言编写编译的,大小也只有几十Kb! 功能方面不会不少,在1.1的基础上增加了虚拟目录功能,更多的请在正式版中慢慢体会吧! 文件说明: CHKenFTP.exe 服务器程序,其实只要这一个文件就能建立服务器了! FTP Config.exe 服务器配置程序,设置服务器参数和用户、组等信息,注册版和非注册版就功能有区别,其它的功能一样,未注册没有虚拟目录、记录日志等功能! Register.exe 注册程序,应放在服务器程序的目录,不能直接运行,由配置程序引用! CHKenFTP.ini 配置文件,保存服务器的配置信息,可手工更改! CHKenFTP_Log.htm 服务器日志信息,可以用IE打开查看! 高级用户和非注册用户可以利用CHKenFTP.ini实现注册版的所有功能! CHKenFTP.ini 说明如下: [CHKen FTP] ;商品号 Port=21 ;启动时是否显示 Logo ;注:如果Logo=0,运行后没有提示什么的,这时的服务器可以用作FTP木马,请不要用于非法用途,后果一切自负 Logo=-1 ;是否写日志文件 Write Log File=-1 ;最大线程数,不得小于1 Max Thread=8 ;每线程最少连接数,不得小于1 Thread Min Connect=1 ;组信息 [Group] ;组个数 Count=1 ;第1个组的名 0=Admin ;Guest 信息 Guest Enable=-1 Guest Attrib=1 Guest RootPath=C:\ Guest VirtualPathCount=0 ;组 Admin信息 ;是否击活 Admin Enable=-1 ;上传下载等权限 Admin Attrib=31 ;根目录 Admin RootPath=C:\ ;虚拟目录个数 Admin VirtualPathCount=2 ;第1个虚拟目录 Admin VirtualPath 0=C:\1 ;第1个虚拟目录名称 Admin VirtualPathName 0=虚拟目录1 ;第2个虚拟目录 Admin VirtualPath 1=C:\2 ;第2个虚拟目录名称 Admin VirtualPathName 1=虚拟目录2 ;用户信息 [User] ;用户个数 Count=2 ;用户名 0=admin 1=ken ;用户是哪个组 admin Group=Admin ;是否击活 admin Enable=-1 ;密码 admin Password=admin ken Group=Admin ken Enable=-1 ken Password=ken

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧