多线程会耗尽系统资源????

chen6191 2011-04-30 01:40:14
公司有一ASP.NET程序,其中有个场景是点击一个按钮时循环处理大概300个操作,然后返回处理结果给客户端。客户使用后抱怨太慢,需要大概30秒的时间。
目前的处理方式:这300个操作用一个循环处理,也就是一个接一个的处理,每个操作处理方式类似。
每个操作的的大概过程如下,首先从sqlserver数据库中查询取得数据,然后加工处理数据,再更新数据库,每个操作大概涉及十几条sql语句,用时大概0.1秒。

我想把这300个操作改成使用多线程的方式并发处理以降低总的处理时间,但项目组的人员说开的线程太多会浪费系统资源,说如果有5个客户端同时使用的话,服务器就是开1500个线程,会耗尽服务器资源。

请问大家是这样的吗?多线程会耗尽系统资源????

系统环境(ASP.NET+sqlserver2008,同时使用的客户端大概5个)
...全文
452 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
窗户纸 2011-04-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sunwukong 的回复:]
多线程微观上还是顺序执行。并不能提高效率。
[/Quote]
多线程从处理器角度来说确实是顺序执行的,但从进程角度却并不是这样,设想一个进程里只有一个线程在执行任务,它会顺序的进行数据库调用、内存查询等工作,而对于数据库讲大部分时间是闲置的,而多线程工作时,数据库的利用率就会大幅度提高,因此会提高效率,但如果数据库的资源已经很紧张时,多线程就没有意义了。
楼主的问题多线程肯定会有帮助,但不至于开1500个线程, 只要利用好异步通信,使用线程池来解决问题就可以,不过这对系统架构设计的要求较高,新手掌握起来可能困难点。
isjoe 2011-04-30
  • 打赏
  • 举报
回复
1、采用asp.net多线程,页回到服务器开多线程立即返回,线程留在IIS中继续执行并将结果和过程信息存储
到数据库,前台提供一个页面用ajax反馈执行结果,执行完毕后提醒客户查看结果。

2、都采用ajax,页本身不回服务器处理。

3、asp.net的page 属性async="true",如果处理的好也会有不错的效果,此模式下,页面会等待线程运行
结束一同返回请求。
sunwukong 2011-04-30
  • 打赏
  • 举报
回复
多线程微观上还是顺序执行。并不能提高效率。
ycproc 2011-04-30
  • 打赏
  • 举报
回复
耗尽。。。

普通计算机的线程并发是能支持65000 物理上说

一般一个程序 再怎么多线程 3-5足够 足够 足够

我想象到了LZ的强大
  • 打赏
  • 举报
回复
WebService也是一个不错的选择
  • 打赏
  • 举报
回复
一般来说多线程只是尽可能地提高CPU使用率,假如说你已经开启了1500个线程,但是CPU早已跑到100%了,那已起不到什么作用,一样得排队(阻塞)等CPU,一样一来,有可能造成事得其反

而且IIS之类的Web服务器的CPU使用率有可能设置了使用限制,防止系统死掉或者W3W.EXE进程宕掉

是否可以考虑用Ajax+多线程的方式(多开几个就行了,具体多少可能需要根据实际情况反复测试)
个人愚见..

110,567

社区成员

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

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

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