全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:8892
推到 Plurk!
推到 Facebook!

Thread Priority testing

 
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-02 17:33:28 IP:211.76.xxx.xxx 未訂閱
在這題 ■【問題】請教關於 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
附加檔案:62719_testPriority.zip
conundrum
尊榮會員


發表:893
回覆:1272
積分:643
註冊:2004-01-06

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-03 21:35:46 IP:220.143.xxx.xxx 未訂閱
大仔要的東西 庵只找到一個dos的 一直沒時間給大仔 明天晚上寄mail出貨 dos開機片就可執行 一目了然 不過其他的就靠dllee大仔自己啦 如 反X 啦等等 哈哈 好像是日本人寫的
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-03 22:22:02 IP:211.76.xxx.xxx 未訂閱
引言: 大仔要的東西 庵只找到一個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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-03 23:23:41 IP:220.143.xxx.xxx 未訂閱
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=62793    報告大仔 就是他啦 http://www.drhardware.de/pghgprod.htm dos的500K  庵不用寄了 想起來了 哈哈 順便po了一系列偵測軟體 哈哈
fusung
中階會員


發表:26
回覆:169
積分:99
註冊:2003-11-25

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-02-18 15:14:53 IP:61.222.xxx.xxx 未訂閱
不曉得是不是版本的問題,如果我用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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2010-10-19 14:53:48 IP:114.33.xxx.xxx 訂閱

===================引 用 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]

即可解決此問題

系統時間:2024-04-27 10:52:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!