怎么设置线程的全面优先级? |
答題得分者是:aquarius
|
sos_admin
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
|
sos_admin
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
|
aquarius
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:3 回覆:347 積分:330 註冊:2003-05-21 發送簡訊給我 |
|
sos_admin
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
|
aquarius
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:3 回覆:347 積分:330 註冊:2003-05-21 發送簡訊給我 |
引言: 我知道TThread.Priority可以设置,但是我想知道(1~31) 优先级是怎么算出来的!!! 谢谢!怎麼算? 很簡單, MS 定義好, 我們照著用. 就這麼簡單!!..... 事實上, 32 級還是分得太細, 所以不管是 VC 或 DELPHI, 把 THREAD 包成物件型式後, 都只提供了幾列舉型態讓設計者選. 你要是有興趣, 到 MSDN , 以 Thread Priority 當 KEYWORD 找一下, 有不少的說明. ...Aquarius
------
水瓶男的blog: http://791909.blogspot.com |
sos_admin
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
|
aquarius
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:3 回覆:347 積分:330 註冊:2003-05-21 發送簡訊給我 |
引言: 1、哪么我要设置3、13、26的优先级该怎样做? 2、THREADVAR我在书上看了N便了,但是总是感觉它没有什么用处!1. 不是說了嗎, 去MSDN 看看吧!! http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/setthreadpriority.asp http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_thread.asp 2. 書? 你 DELPHI 的 HELP 看了嗎? 寫得很白話呀... 以下取自 DELPHI 5 HELP Thread-local (or thread) variables are used in multithreaded applications. A thread-local variable is like a global variable, except that each thread of execution gets its own private copy of the variable, which cannot be accessed from other threads. 至於什麼時候會用到, 那就要看是什麼程式啦!! 我自己是沒用過. ...Aquarius
------
水瓶男的blog: http://791909.blogspot.com |
sos_admin
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
引言: 1. 不是說了嗎, 去MSDN 看看吧!! http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/setthreadpriority.asp http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_thread.asp 2. 書? 你 DELPHI 的 HELP 看了嗎? 寫得很白話呀... 以下取自 DELPHI 5 HELP Thread-local (or thread) variables are used in multithreaded applications. A thread-local variable is like a global variable, except that each thread of execution gets its own private copy of the variable, which cannot be accessed from other threads. 至於什麼時候會用到, 那就要看是什麼程式啦!! 我自己是沒用過. ...Aquarius那么,MSDN 定义的方式在的DELPHI同样适用吗?我看好像有点不同。还请aquarius 兄指教! 你说HREADVAR的DELPHI HELP ,我以前早就见过!但是不太懂,是不是它定义的VAR 可以被它所创建的实例所共享;如果是这样,他不如定义个PUBLIC VAR就可以了吗? 请aquarius兄指教了 |
aquarius
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:3 回覆:347 積分:330 註冊:2003-05-21 發送簡訊給我 |
引言: 那么,MSDN 定义的方式在的DELPHI同样适用吗?我看好像有点不同。还请aquarius 兄指教! 你说HREADVAR的DELPHI HELP ,我以前早就见过!但是不太懂,是不是它定义的VAR 可以被它所创建的实例所共享;如果是这样,他不如定义个PUBLIC VAR就可以了吗?DELPHI 也只是把 MS 的定義再包一層起來呀... 追根究底, 還不是都呼叫到 MS Windows 的核心. ThreadVar 的範例如下 var iVar : integer ; ThreadVar iThreadVar : integer ; constructor TZThread.Create(sIn, sOut:string;h:THandle;iNum:integer); begin FIn:=sIn ; FOut:=sOut ; Fh:=h ; FiNum:=iNum ; FreeOnTerminate := false; inherited Create(False); end; procedure TZThread.Execute; begin inc(iVar) ; inc(iThreadVar) ; PostMessage(Fh,UM_ThreadDoneMsg,$BBBB,(iVar shl 16) or iThreadVar) ; PostMessage(Fh,UM_ThreadDoneMsg,$AAAA,FiNum) ; end ; procedure TForm1.UMThreadDone(var msg: TMessage); var s : string ; i : integer ; begin // 檢查是否為合法的 MSG, 避免別人誤送 if msg.WParam<>$AAAA then begin if msg.WParam=$BBBB then begin Memo1.Lines.Add(format('var=%d, ThreadVar=%d',[msg.lParamHi,msg.lParamLo])) ; end ; exit ; end ; s:=inttostr(msg.lParam) ; i:=lbThreadList.Items.IndexOf(s) ; if i>=0 then lbThreadList.Items.Delete(i) ; zta[msg.lParam].Terminate ; zta[msg.lParam].WaitFor ; zta[msg.lParam]:=nil ; end; 呼叫三次 Thread 後, 輸出如下 var=1, ThreadVar=1 var=2, ThreadVar=1 var=3, ThreadVar=1 就像 HELP 檔中說的, ThreadVar 和 Var 一樣, 可以宣告出 Global 變數. 但最大的不同是, 在 Thread 被建立時, 同時也會產生一份同名的變數, 也就是說每一個 Thread 雖然變數名字是用同一個, 實際上是用到不同的位址. 和宣告在 Public 有什麼不同, 還是有差異呀!! 至少放在 Public 中, 還可以被別的 THREAD 引用, 但是 ThreadVar 就不行, 每一份 Thread (MAIN PROCESS 也是一個 THREAD) 都各用一份獨立的位址. 為什麼要有這樣的功能, 一定是有人會用到嘛!! 又不是每個 COMPILER 提供的指令每個人都一定要用到.
------
水瓶男的blog: http://791909.blogspot.com |
sos_admin
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
|
aquarius
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:3 回覆:347 積分:330 註冊:2003-05-21 發送簡訊給我 |
引言: 1、那么,请问一下: delphi的进程优先类定义值$40 $4000 $20 $8000 $80 $100 分别为十进制的多少? 2、如上所说那么threadvar定义的与 private i:integer; public ..... 不是效果一样吗? aquarius 兄,不要怪我问的麻烦;我想比较全面的了解thread,所以就...
------
水瓶男的blog: http://791909.blogspot.com |
sos_admin
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:121 回覆:697 積分:768 註冊:2003-07-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |