關於cpu資源100% |
尚未結案
|
ZongDe
一般會員 發表:9 回覆:11 積分:4 註冊:2002-11-27 發送簡訊給我 |
我在Timer中使用了兩個迴圈來顯示即時的資料,結果CPU 資源竟然達到100% 請問CPU 資源100% 會產生什麼影響嬤
如果會需要如何改寫,才不會產生這個問題 我目前寫的是通訊程式,在一個Timer時間中送出控制封包,及接收回傳的封包
加以處理,然後再將處理結果顯示出來
void __fastcall Tform1::Timer1Timer(TObject *Sender) { send(); readBuf(); for () for () SG->Cells[][] = data; } void readbuf() { do { //取出byte資料 //判斷有幾筆是否接收完畢 } while(); }如果還看不懂我可以在post完整的程式 發表人 - zongde 於 2004/03/18 14:28:03 |
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 我在Timer中使用了兩個迴圈來顯示即時的資料,結果CPU 資源竟然達到100% 請問CPU 資源100% 會產生什麼影響嬤 如果會需要如何改寫,才不會產生這個問題 我目前寫的是通訊程式,在一個Timer時間中送出控制封包,及接收回傳的封包 加以處理,然後再將處理結果顯示出來 void __fastcall Tform1::Timer1Timer(TObject *Sender) { send(); readBuf(); for () for () SG->Cells[][] = data; } void readbuf() { do { //取出byte資料 //判斷有幾筆是否接收完畢 } while(); } 如果還看不懂我可以在post完整的程式ZongDe 你好: 先試試在你的迴圈裡面加上以下兩行程式碼 < class="code"> Sleep(100); // 休眠 0.1 seconds // Sleep(10); // 或者休眠 0.01 seconds Application->ProcessMessages(); 備註: 這一行 Application->ProcessMessages(); 不加應該也可以!! -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2004/03/18 14:48:52
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
ZongDe
一般會員 發表:9 回覆:11 積分:4 註冊:2002-11-27 發送簡訊給我 |
|
ZongDe
一般會員 發表:9 回覆:11 積分:4 註冊:2002-11-27 發送簡訊給我 |
剛剛試了一下,加入Sleep()後,CPU 使用率下降到60%左右
但是加入Application->ProcessMessages();我的程式會關不掉
去看說明好像是depends出去要等到迴圈結束,才能離開 但是我的程式中使用的是輪詢的方式去處理週邊硬體的資料
void __fastcall Tform1::Timer1Timer(TObject *Sender) { send(); //送出7byte readbuf();//接收週邊回來的封包 show(); Sleep(100); Application->ProcessMessages();//加入這整個程式關不掉 } void __fastcall Tform1::ButtonClick(TObject *Sender) { this->Close; } void send() { for (int i=0;i<7;i ) { SetPortByte(HwCtrl,addr,Dat); } } void readbuf() { do { BYTE x,x1,r; x= dprd(rxindi); // get RX buf in index x1= rxindo; if (x != x1) // compare buf in/out index { r= dprd(rxbuf x1); rxindo= (x1 1) & 0x1f; rxsvr(r); // call packge check subrouting. } }while(x!=x1); } void __fascall Tform1::show() { for (int i=0;i<16;i ) for (int j=0;j<16;j ) SG->Cells[i][j] = data; } }第一次發言,可能表達的不好請多多包含 抱歉抱歉修改完畢 發表人 - |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |