SetTimer(NULL, 1, 1000, &printSTR);
SetTimer(NULL, 2, 10000, &printFa);
我用了定時器SetTimer,程式cpu使用率從0升到30%,為什么?程式變卡了
uj5u.com熱心網友回復:
那要看 printSTR printFa 中做了什么? 定時器訊息優先級雖然很低,但是其呼叫也是走訊息佇列的一般運行時間比較長的呼叫,建議使用后臺執行緒來操作
uj5u.com熱心網友回復:
你的回呼函式中做了什么操作?uj5u.com熱心網友回復:
我把回呼函式中該洗掉的洗掉了,后來又系CPU使用率有恢復了。uj5u.com熱心網友回復:
瘟都死里面盡量少用定時器,考慮多用執行緒
uj5u.com熱心網友回復:
定時器是不能做長時間的任務的,不要阻塞定時器
uj5u.com熱心網友回復:
你的OnTimer中都干嘛了,占CPU是個這個函式里占的uj5u.com熱心網友回復:
那是你定時處理程式,太占用cpu,這種函數進去馬上就要退出來uj5u.com熱心網友回復:
定時器處理函式盡量簡單快速。如果比較復雜,可以考慮執行緒池。
uj5u.com熱心網友回復:
timer最好用來做簡單的事情,什么叫簡單,比如你想3秒后做一件事,那么可以用timer,用完關掉,這種叫簡單。如果用來做驅動型的事情,比如長時間定時查詢某一事情,那么一定會導致系統cpu占用率變高,這種情況,直接在執行緒里做就行了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/7398.html
標籤:基礎類
