有一个windows服务,从消息队列里获得消息,并处理<BR>>Code</P> <P>while(true)<BR>{<BR> //process data<BR>}<BR>>Question<BR>1:尽可能早地process data<BR>2:因为while(true) [现在服务器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); }
精慕HU
TA贡献1845条经验 获得超8个赞
可以用上面各位的轮询方式检查消息队列,也可以用信号方式等待消息队列。 及 while 循环中等待一个信号量,当消息队列中有消息时,由消息队列的管理线程设置这个信号量,while循环得到这个信号量后往下执行。
- 2 回答
- 0 关注
- 359 浏览
添加回答
举报
0/150
提交
取消