我有兩個程序,應該做同樣的事情,略有不同。除非用戶以某種方式停止遊戲,否則這兩個遊戲循環都會永久運行。其中一個程序的遊戲循環是實現並渲染的,另一個遊戲循環是空的,什麼都不做(只是聽用戶停止)。爲什麼空循環使用更多的CPU?
當我打開任務管理器來查看資源使用情況時,我發現具有空循環的程序使用14%的CPU,而實際繪製屏幕的程序使用約1-2%。
我關於這個問題的猜測如下:
我比較了這兩個程序的代碼,尋找差異,並沒有太多。然後,我想到渲染屏幕的循環可能受到其他因素的約束(例如像素髮送到屏幕,刷新率可能?)所以在CPU做它的事情之後,它將該線程休眠,直到其他東西完成。但是由於其他程序幾乎沒有任何功能,而且什麼都不做也很容易,所以CPU從不會讓該線程進入睡眠狀態並繼續運行。我缺乏知識來確認,如果這是原因,那麼我問你。這是發生這種情況的原因嗎? (獎金問題)如果是這樣,爲什麼CPU停在大約14%,並沒有達到100%?
謝謝。
也許空循環沒有延遲間隔,這與繪製的東西得到了嗎? – UnknownError1337