为了账号安全,请及时绑定邮箱和手机立即绑定

winows服务的问题-cpu100%

winows服务的问题-cpu100%

C#
精慕HU 2018-12-25 15:12:31
<P>&gt;Function:有一个windows服务,从消息队列里获得消息,并处理<BR>&gt;Code</P> <P>while(true)<BR>{<BR>&nbsp;//process data<BR>}<BR>&gt;Question<BR>1:尽可能早地process data<BR>2:因为while(true)&nbsp;&nbsp; [现在服务器cpu100%]</P> <P>现在如果不while(true)数据就不能尽可能早地处理。</P> <P>如果while(true),cpu100%</P> <P>请大家指教指教!</P>
查看完整描述

2 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

while(true){ //process data. //线程休眠5个毫秒,尽可能早的处理是否可以容忍5ms的延误,如果可以就这么做 Thread.Sleep(5); //如果不可以,Sleep(0)让出cpu的执行权,如果有别的进程等待使用cpu则其他进程可以获得cpu Thread.Sleep(0); }

查看完整回答
反对 回复 2018-12-29
?
暮色呼如

TA贡献1853条经验 获得超9个赞

可以用上面各位的轮询方式检查消息队列,也可以用信号方式等待消息队列。 及 while 循环中等待一个信号量,当消息队列中有消息时,由消息队列的管理线程设置这个信号量,while循环得到这个信号量后往下执行。

查看完整回答
反对 回复 2018-12-29
  • 2 回答
  • 0 关注
  • 493 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信