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

winows服务的问题-cpu100%

winows服务的问题-cpu100%

海绵宝宝撒 2018-11-21 05:02:47
有一个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>请大家指教指教!
查看完整描述

2 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

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

查看完整回答
反对 回复 2018-11-22
?
精慕HU

TA贡献1845条经验 获得超8个赞

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

查看完整回答
反对 回复 2018-11-22
  • 2 回答
  • 0 关注
  • 338 浏览

添加回答

举报

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