我的程序是幻燈片放映。它在具有其他進程的機器上運行,所以在等待顯示下一張幻燈片時,我將其稱爲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. 隨着時間的推移CPU利用率下降
- 2. 如何降低ffmpeg的CPU使用率?
- 3. 如何降低CruiseControl.NET的CPU使用率?
- 4. 隨着UIScrollView變大,CPU使用率下降?
- 5. Node.js可讀流隨着時間的推移而變慢,CPU使用率下降
- 6. oracle組期間CPU利用率高
- 7. SleepEx期間處理多少個APC?
- 8. CPU使用率和CPU利用率之間的區別?
- 9. SlimDX:限制幀速率以降低CPU使用率
- 10. JSF生命週期階段執行期間CPU使用率高
- 11. 降低CPU佔用率(電子:DesktopCapturer)
- 12. CPU使用率( 「」)
- 13. CPU使用率
- 14. CPU使用率不同?
- 15. 如何在高cpu使用率期間使Jetty返回503?
- 16. 使用PhantomJS/CasperJS降低CPU使用率的方法
- 17. 當Silverlight中的CPU不在屋頂時,什麼可以使幀率下降?
- 18. 在TSQL查詢期間控制CPU使用率 - sql 2008
- 19. 降低應用程序的CPU使用率
- 20. 降低服務器CPU使用率與AJAX調用
- 21. 如何降低Android手機中應用的CPU使用率?
- 22. Websphere CPU使用率
- 23. CentOS CPU使用率
- 24. Bash - 腳本在長時間運行時從3%的CPU使用率降至100%
- 25. 爲什麼在負載測試期間CPU%以最高用戶負載下降?
- 26. Mysql通過緩衝降低CPU使用率
- 27. 高CPU負載,但低CPU使用率和內存使用率
- 28. 相對於最大CPU頻率的CPU/CPU進程/ CPU週期
- 29. 讀取多核CPU的CPU使用率
- 30. 不可測量的CPU使用率?
你稱之爲啓動線程的高級別,比如視頻播放器嗎? – 2011-05-23 10:13:03
不知道。我使用FreeImage庫來處理圖像轉換,但在這一點上沒有理由做任何事情。事實上,它在我的機器上運行正常,但不在客戶身上令人困惑。 – 2011-05-23 10:16:38
Offtopic:調用睡眠是一種奇怪的方式來做到這一點。當你這樣做時,你會使你的應用程序無響應。使用計時器觸發幻燈片更改會更好。 – 2011-05-23 11:01:36