我的程序是幻燈片放映。它在具有其他進程的機器上運行,所以在等待顯示下一張幻燈片時,我將其稱爲SleepEx(N,false),期望它使用的CPU數量接近於零(N在100ms和5000ms之間)。在我開發的XP Pro機器上,這正是發生的事情,但是在我的客戶的XP Home機器上,它在SleepEx()期間註冊了30-80%的CPU。該代碼是一個單線程,所以無論是使用所有的CPU都在調用SleepEX()。有沒有人見過這個?SleepEx()期間CPU使用率不下降()
回答
哪個進程佔用所有CPU?如果用調試器闖入進程 - 在堆棧跟蹤中花費時間?
嘗試使用ProcDump在進程達到CPU峯值時創建進程轉儲。然後分析堆棧跟蹤以查看它卡住的位置。這樣做幾次,你可以很好地抽出花費時間。
這是過程本身。我正在使用任務管理器進行監控。 – 2011-05-23 10:22:17
我建議你在繁忙時間觸發進程的遠程轉儲,並分析堆棧跟蹤以查看它花費的時間 – 2011-05-23 10:23:12
對不起 - 過早地點擊
我以前見過這個。您阻止主窗口消息處理線程。
如果它具有主窗口消息處理功能,則不應將Sleep()函數置於單線程應用程序中。窗口化的應用程序總是應該處理窗口消息而不會有明顯的延遲,另一種情況是它至少會導致應用程序出現死鎖。 結果取決於Windows平臺,編譯器設置和CPU配置,通常在調試模式下的應用程序具有臨時解決方法。但是,如果你啓動這樣的應用程序編譯與釋放設置它可以消耗一個CPU核心功能,這阻止了他的主窗口消息處理線程。
MSDN的備註部分Sleep()函數說明清楚地說明了這種情況。
你只需要開啓新的線程,在那裏使用Sleep()函數允許主線程中的窗口消息自由流動。
- 1. 如何降低CruiseControl.NET的CPU使用率?
- 2. 如何降低ffmpeg的CPU使用率?
- 3. 隨着UIScrollView變大,CPU使用率下降?
- 4. Node.js可讀流隨着時間的推移而變慢,CPU使用率下降
- 5. CPU使用率和CPU利用率之間的區別?
- 6. 降低CPU佔用率(電子:DesktopCapturer)
- 7. SleepEx期間處理多少個APC?
- 8. CPU使用率( 「」)
- 9. CPU使用率不同?
- 10. 當Silverlight中的CPU不在屋頂時,什麼可以使幀率下降?
- 11. 在TSQL查詢期間控制CPU使用率 - sql 2008
- 12. 如何降低Android手機中應用的CPU使用率?
- 13. CPU使用率高,串口時間
- 14. Websphere CPU使用率
- 15. CentOS CPU使用率
- 16. 爲什麼在負載測試期間CPU%以最高用戶負載下降?
- 17. Mysql通過緩衝降低CPU使用率
- 18. 相對於最大CPU頻率的CPU/CPU進程/ CPU週期
- 19. 並行效率下降不一致
- 20. Java - 高CPU使用率
- 21. 高mySQL cpu使用率
- 22. wordpress 4.8高CPU使用率
- 23. CPU使用率和Object.wait
- 24. JBoss CPU使用率問題
- 25. javaw.exe CPU使用率高
- 26. Android - 內存/ CPU使用率
- 27. C++,CPU使用率過高
- 28. CPU使用率達到100%
- 29. CPU使用率峯值6.1
- 30. JavaScript累計CPU使用率
你稱之爲啓動線程的高級別,比如視頻播放器嗎? – 2011-05-23 10:13:03
不知道。我使用FreeImage庫來處理圖像轉換,但在這一點上沒有理由做任何事情。事實上,它在我的機器上運行正常,但不在客戶身上令人困惑。 – 2011-05-23 10:16:38
Offtopic:調用睡眠是一種奇怪的方式來做到這一點。當你這樣做時,你會使你的應用程序無響應。使用計時器觸發幻燈片更改會更好。 – 2011-05-23 11:01:36