<P>>Function:有一個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>請大家指教指教!</P>
2 回答

撒科打諢
TA貢獻1934條經驗 獲得超2個贊
while(true){ //process data. //線程休眠5個毫秒,盡可能早的處理是否可以容忍5ms的延誤,如果可以就這么做 Thread.Sleep(5); //如果不可以,Sleep(0)讓出cpu的執行權,如果有別的進程等待使用cpu則其他進程可以獲得cpu Thread.Sleep(0); }

暮色呼如
TA貢獻1853條經驗 獲得超9個贊
可以用上面各位的輪詢方式檢查消息隊列,也可以用信號方式等待消息隊列。 及 while 循環中等待一個信號量,當消息隊列中有消息時,由消息隊列的管理線程設置這個信號量,while循環得到這個信號量后往下執行。
- 2 回答
- 0 關注
- 504 瀏覽
添加回答
舉報
0/150
提交
取消