费解....为什么cpu利用率会达到100%???

fogboy 2002-12-10 09:29:24
我写了一个cs结构的程序,为什么启动几个client后,server端的cpu就会达到100%!
我找不到原因,请大家指教,这可能是由什么原因造成的.多谢了:)
...全文
99 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
HongHuer 2002-12-19
  • 打赏
  • 举报
回复
我的经验(经验不多)是:

首先找死循环

你运行一个 client 和 一个 server see see
HeShe 2002-12-19
  • 打赏
  • 举报
回复
这个要根据你的代码来判断了。sleep只是挂起当前线程,它的目的本身并不是为了要降低cpu,作为服务器,要做的工作量因为无法预先估计,所以这里不能盲目的用sleep,要降低cpu,原则上就是当程序不需要处理时就挂起。在这里用事件对象,或者用阻塞模式都可已达到该目的。不过,即使这样,也不是说你的cpu永远达不到100,如果client数目增多,server便会一直繁忙,这时如果还想优化就只能重新分析你的程序结构了,或者硬件升级。
wwwqqq 2002-12-19
  • 打赏
  • 举报
回复
Sleep(3)
assembly 2002-12-18
  • 打赏
  • 举报
回复
CPU跑啊跑啊,就到了100%
kiko_lee 2002-12-18
  • 打赏
  • 举报
回复
恩,九成都是因为循环的问题,
wuchuncai 2002-12-18
  • 打赏
  • 举报
回复
循环时一定要加上sleep(1)
minzheng 2002-12-18
  • 打赏
  • 举报
回复
方法:
1.适当的睡眠是必要的.
2.好的呢,可以使用事件对象
3.线程间的死锁要避免
LopezMagic 2002-12-18
  • 打赏
  • 举报
回复
一定是OnRecv 一直在循环
wuchuncai 2002-12-10
  • 打赏
  • 举报
回复
循环中加sleep(1)
firebolt2002 2002-12-10
  • 打赏
  • 举报
回复
如果是TCP连接可以设置为阻塞模式
springzcq 2002-12-10
  • 打赏
  • 举报
回复
在while 循环中加上Sleep(10); 即可解决,试试看
fogboy 2002-12-10
  • 打赏
  • 举报
回复
与内存泄漏有关系吗:::
silverwgy 2002-12-10
  • 打赏
  • 举报
回复
你的线程肯定一直在抢占cpu的时间片,用Sleep(1)目的是挂起线程,空出时间片让其他线程运行,这样cpu的占用率就会下降的
fogboy 2002-12-10
  • 打赏
  • 举报
回复
给个理由先:))
shesh 2002-12-10
  • 打赏
  • 举报
回复
所有的线程WHILE(1)循环里面用Sleep(1)就行了,保证你马上只占到不超过2%
fogboy 2002-12-10
  • 打赏
  • 举报
回复
我的代码太多了,一时半会也看不完呀::::
望大家有经验的多提点意见呀::::
Rigel 2002-12-10
  • 打赏
  • 举报
回复
要看你的代码才知道,这可不好猜。
zhang865 2002-12-10
  • 打赏
  • 举报
回复
如果不是什么死循环,或者你的循环很多,就是你处理了空闲函数。
crystal_heart 2002-12-10
  • 打赏
  • 举报
回复
up
runky 2002-12-10
  • 打赏
  • 举报
回复
m_hEvent=CreateEvent(NULL,TRUE,TRUE,"XXXEvent");
在while(1)
{
ResetEvent(m_hEvent);
WaitForSingleObject(m_hEvent,1);
原代码....
}
就可以让你的cpu变化剧烈,不会持续偏高
加载更多回复(1)

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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