Delphi多執行緒總結

2021-10-25 03:31:34 字數 815 閱讀 8838

1、多執行緒總體認識 

當前程式是乙個程序, 程序只是乙個工作環境, 執行緒是工作者;

每個程序都會有乙個啟動執行緒(或叫主線程), 也就是說: 大量的編碼都是寫給這個主線程的;

exitthread(0); 退出主線程;

系統不允許乙個沒有執行緒的程序存在, 所以程式就退出了.

exitthread 函式的引數是乙個退出碼, 這個退出碼是給之後的其他函式用的, 這裡隨便給個無符號整數即可.

2、 vcl實現同步的另一種方法就是呼叫執行緒類的synchronize的過程,此過程需要乙個無引數的procedure,故在此procedure中無法傳遞引數值,但可以通過類的成員來實現。在類的execute中只須呼叫synchronize就可以了。

實現:關鍵在於對synchronize引數的定義。定義乙個無引數的procedure通過它來訪問類的成員變數szname和nindex。在類的過載execute中呼叫synchronize。

3、多執行緒用tthread類以及uses syncobjs後使用的 tcriticalsection (臨界區),tmutex(互斥體),tsemaphore (訊號物件,d2009才開始有),tevent (事件物件)很多都是引用了api的方法進行了一定的簡化,不過也有部分功能的缺失,如event (事件物件)缺少了啟動步進一次後暫停的功能,不過基本在同步上已經夠用了,另外在tthread類宣告的execute過程裡,加上freeonterminate := true;這句會讓執行緒執行完後自動釋放,還可以把功能**的方法套在synchronize()裡,用於同步一些非執行緒安全的控制項物件,避免多個執行緒同時對乙個物件操作引發的問題。

delphi 多執行緒

摘自 萬一的部落格 functionmyfun p pointer integer stdcall var i integer begin fori 0to500000do begin form1.canvas.lock form1.canvas.textout 10,10,inttostr i f...

delphi 多執行緒

看別人的部落格一萬次記憶效果也沒那麼好,還是自己動手寫寫吧!functioncreatethread lpthreadattributes pointer dwstacksize dword lpstartaddress tfnthreadstartroutine lpparameter point...

delphi 多執行緒例項

下面筆者將介紹乙個簡單的例項,解釋和說明前面所述的內容。1 建立form,在其中建立兩個按鈕 開始採集 和 停止採集 新增乙個paintbox1。2 建立乙個新的單元,在其中輸入以下 unit collectthread inte ce uses classes,sysutils,stdctrls,...