整理萬一部落格 執行緒學習 每個例子 均執行和使用 執行環境(我自己使用的是xe4,其他版本也可 )(附原始碼)
什麼是執行緒
vcl執行緒的使用
tthread類
屬性freeonterminate屬性(指定當執行緒終止時是否自動刪除執行緒物件 預設:false(有的書上說是 true,建議使用時候,直接賦值))
priority屬性 設定執行緒的優先順序
returnvalue屬性 當執行緒終止時,用該屬性為其他執行緒傳遞乙個返回值
suspended屬性,指明執行緒是否出於掛起狀態
terminated屬性,執行緒執行時,置為true,則應將執行緒終止
threadid 執行緒id
handle 執行緒控制代碼
方法doterminate方法-觸發onterminate事件
execute方法-建立執行緒必須實現的方法
resume 當執行緒物件處於暫停狀態時,呼叫此方法可以恢復執行緒執行
suspend 當執行緒執行時,呼叫此方法可以暫停執行緒執行
synchronize 避免多個執行緒同時操作乙個物件導致程式崩潰
terminate 終止執行緒
waitfor 等待執行緒物件的終止,並返回執行緒物件的returnvalue屬性值
舉例說明
unit unit1;inte***ce
uses
winapi.windows, winapi.messages, system.sysutils, system.variants, system.classes, vcl.graphics,
vcl.controls, vcl.forms, vcl.dialogs, vcl.stdctrls;
type
tform1 = class(tform)
btn1: tbutton;
procedure btn1click(sender: tobject);
private
public
end;
var
form1: tform1;
implementation
type
tmythread = class(tthread)
protected
procedure execute; override;
end;
procedure tmythread.execute;
vari:integer;
begin
inherited;
for i := 0 to 100000 do
begin
//這段**還是加上
freeonterminate := true;
with form1.canvas do
begin
lock;
textout(10,10,inttostr(i));
unlock;
end;
end;
end;
procedure tform1.btn1click(sender: tobject);
begin
tmythread.create(false);
end;
end.
Delphi中使用多執行緒
這些天在indy的阻塞式socket模型的強迫下,開始在delphi中使用多執行緒。總結了一些經驗,儘管非常膚淺 1 對於vcl的控制項 大部分vcl的控制項的方法和屬性是不能保證執行緒安全的。我粗淺的理解執行緒安全為如果這個函式同時被兩個執行緒呼叫時,由於內部的指令不能保證按順序 即中間插入其他執...
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...