首页 新闻 搜索 专区 学院

winows服务的问题-cpu100%

0
悬赏园豆:50 [已解决问题] 解决于 2008-08-22 13:32
<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>
roboth的主页 roboth | 初学一级 | 园豆:28
提问于:2008-08-19 10:27
< >
分享
最佳答案
0
while(true){ //process data. //线程休眠5个毫秒,尽可能早的处理是否可以容忍5ms的延误,如果可以就这么做 Thread.Sleep(5); //如果不可以,Sleep(0)让出cpu的执行权,如果有别的进程等待使用cpu则其他进程可以获得cpu Thread.Sleep(0); }
玉开 | 大侠五级 |园豆:8822 | 2008-08-19 10:59
其他回答(3)
0
同上
West | 园豆:1095 (小虾三级) | 2008-08-19 13:57
0
同上 不过最好多休息下500毫秒 跑快了 会跑死的
小眼睛老鼠 | 园豆:2774 (老鸟四级) | 2008-08-19 14:20
0
可以用上面各位的轮询方式检查消息队列,也可以用信号方式等待消息队列。 及 while 循环中等待一个信号量,当消息队列中有消息时,由消息队列的管理线程设置这个信号量,while循环得到这个信号量后往下执行。
eaglet | 园豆:17119 (专家六级) | 2008-08-19 14:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册