有一個windows服務,從消息隊列里獲得消息,并處理<BR>>Code</P> <P>while(true)<BR>{<BR> //process data<BR>}<BR>>Question<BR>1:盡可能早地process data<BR>2:因為while(true) [現(xiàn)在服務器cpu100%]</P> <P>現(xiàn)在如果不while(true)數(shù)據(jù)就不能盡可能早地處理。</P> <P>如果while(true),cpu100%</P> <P>請大家指教指教!
2 回答

不負相思意
TA貢獻1777條經(jīng)驗 獲得超10個贊
while(true){ //process data. //線程休眠5個毫秒,盡可能早的處理是否可以容忍5ms的延誤,如果可以就這么做 Thread.Sleep(5); //如果不可以,Sleep(0)讓出cpu的執(zhí)行權(quán),如果有別的進程等待使用cpu則其他進程可以獲得cpu Thread.Sleep(0); }

精慕HU
TA貢獻1845條經(jīng)驗 獲得超8個贊
可以用上面各位的輪詢方式檢查消息隊列,也可以用信號方式等待消息隊列。 及 while 循環(huán)中等待一個信號量,當消息隊列中有消息時,由消息隊列的管理線程設置這個信號量,while循環(huán)得到這個信號量后往下執(zhí)行。
- 2 回答
- 0 關注
- 392 瀏覽
添加回答
舉報
0/150
提交
取消