Thread Priority testing |
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
在這題
■【問題】請教關於 multi thread 的問題
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=62520
除了 lu/pwipwi 兩位 multi thread 高手過招外,
conundrum 大大也提供了一個好文章:
http://www.delphi3d.net/articles/viewarticle.php?article=threads.htm
其中作者 Tom Nuydens 還有 Delphi 的 Thread 範例:
http://www.delphi3d.net/download/threaddemos.zip
我把其中的 Priority 範例用 BCB 改寫了,同時也作了一些些修改,如下:
還不錯玩喔 < href="http://free.greenworld.com.tw/~dllee/" target="blank">吃軟也吃硬 dllee.ktop.com.tw StatPlus 系統資源監測器 @ KTOP VMASK - ViewMove Automation Software Kernel
------
http://www.ViewMove.com |
conundrum
尊榮會員 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
|
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
引言: 大仔要的東西 庵只找到一個dos的 一直沒時間給大仔 明天晚上寄mail出貨 dos開機片就可執行 一目了然 不過其他的就靠dllee大仔自己啦 如 反X 啦等等 哈哈 好像是日本人寫的感謝 conundrum 大大,希望可以看懂 不過... > 最近 > 中低安全性 就可以正常看到 > 抱怨一下 href="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=59104" target="blank">StatPlus 系統資源監測器 都登錄了快兩個月了,都還沒更新上,還在審稿中... 吃軟也吃硬 dllee.ktop.com.tw StatPlus 系統資源監測器 @ KTOP OpenPLC - IEC61131-3
------
http://www.ViewMove.com |
conundrum
尊榮會員 發表:893 回覆:1272 積分:643 註冊:2004-01-06 發送簡訊給我 |
|
fusung
中階會員 發表:26 回覆:169 積分:99 註冊:2003-11-25 發送簡訊給我 |
不曉得是不是版本的問題,如果我用BCB5.0去重新編譯 是正常的,但是我如果用BCB6.0則整個程式會一直執行不理我 (無法關閉視窗),後來我把程式某一段遮起來就正常了!
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { // Idle->Suspend(); // Lowest->Suspend(); // Lower->Suspend(); // Normal->Suspend(); // Higher->Suspend(); // Highest->Suspend(); // TimeCritical->Suspend(); delete Idle; delete Lowest; delete Lower; delete Normal; delete Higher; delete Highest; delete TimeCritical; }如果有人遇到跟我類似的問題可以仿照我的方法去解決。 /*
------
The first step toward proving things for yourself is to understand how others have done it before! |
ken0127
一般會員 發表:3 回覆:9 積分:7 註冊:2009-09-23 發送簡訊給我 |
===================引 用 fusung 文 章=================== 不曉得是不是版本的問題,如果我用BCB5.0去重新編譯 是正常的,但是我如果用BCB6.0則整個程式會一直執行不理我 (無法關閉視窗),後來我把程式某一段遮起來就正常了! void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { // Idle->Suspend(); // Lowest->Suspend(); // Lower->Suspend(); // Normal->Suspend(); // Higher->Suspend(); // Highest->Suspend(); // TimeCritical->Suspend(); delete Idle; delete Lowest; delete Lower; delete Normal; delete Higher; delete Highest; delete TimeCritical; }如果有人遇到跟我類似的問題可以仿照我的方法去解決。 /* The first step toward proving things for yourself is to understand how others have done it before! */ 過了這麼久的文章才回覆不知道會不會太晚上, 上面的大大遇到的問題,我剛也遇到了 重現的方法只要任何一個check box勾選,然後按下「All STOP」按鈕,即會在關閉程式時出現這個問題 原因是因為All STOP內會去判斷有無勾選,若有勾選的話則讓該對應的thread做suspend的動作 而在FormClose時,又會去對每個thread做suspend 故在delete時,會造成無限迴圈(←這個我不是很確定是不是迴圈) 解決的方法如下: 把FormClose內的程式改成 [code cpp] if(!Idle->Suspended) Idle->Suspend(); if(!Lowest->Suspended) Lowest->Suspend(); if(!Lower->Suspended) Lower->Suspend(); if(!Normal->Suspended) Normal->Suspend(); if(!Higher->Suspended) Higher->Suspend(); if(!Highest->Suspended) Highest->Suspend(); if(!TimeCritical->Suspended) TimeCritical->Suspend(); delete Idle; delete Lowest; delete Lower; delete Normal; delete Higher; delete Highest; delete TimeCritical; [/code] 即可解決此問題 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |