CPU占用率100%的解决办法???

nyucv 2006-10-21 08:30:53
多线程SOCKET服务端.其中有发送文件等循环操作!

可CPU占用率100%.

查阅相关资料解决办法为在适当位置Thread.Sleep(100).

可现在问题是.只要客户端请求线程数一增多这CPU占用率又随之加大.

请问各位能给个好点的算法.比如根据线程数来设定线程睡眠时间!减少CPU占用率呢???

...全文
509 11 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
nyucv 2006-10-26
  • 打赏
  • 举报
回复
不行.我改成异步调用.只要线程达到10个.CPU占用率就到90%.:(

没有从更本上解决问题.


我就在想.这IIS一类的系统.为什么就算100人同一时间段内访问服务器.好像也没那么夸张吧?

dazhu2 2006-10-22
  • 打赏
  • 举报
回复
建议用异步调用,(read = fs.Read(bytes, 0, bytes.Length)) > 0 会阻塞当前线程的
schenton 2006-10-22
  • 打赏
  • 举报
回复
关机 然后cpu使用率为0 多好哇~
lovevsnet 2006-10-22
  • 打赏
  • 举报
回复
在适当位置加
Application.DoEvents();
nyucv 2006-10-22
  • 打赏
  • 举报
回复
肯定是文件传送完就关闭.

如果文件10M,20M反正总有结束的时候.
tete 2006-10-21
  • 打赏
  • 举报
回复
学习
whq1982 2006-10-21
  • 打赏
  • 举报
回复
((read = fs.Read(bytes, 0, bytes.Length)) > 0
这个条件什么时候退出
six_six_2005 2006-10-21
  • 打赏
  • 举报
回复
如果开发高性能服务端,使用完成端口+异步调用.不要使用阻塞方法.
nyucv 2006-10-21
  • 打赏
  • 举报
回复
while ((read = fs.Read(bytes, 0, bytes.Length)) > 0)
{


mySocket.Send(bytes, 0, read, SocketFlags.None);

iTotBytes += read;


}
这代码不能优化了吧?????

这是线程中传送文件的代码.晕!!

只有SLEEP()才能唤醒系统其它线程.这样CPU占用率才不会太高嘛!
股神 2006-10-21
  • 打赏
  • 举报
回复
还是应该在代码上找问题
aafshzj 2006-10-21
  • 打赏
  • 举报
回复
既然100%说明你的代码就是会导致100%,Sleep有什么用,那不等于消极怠工吗?关键在于要找到代码的问题,有没有没有意义的性能支出(死循环,可优化的算法等)。
相关推荐
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2006-10-21 08:30
社区公告

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