不知什么時候,也許是XE8,也許是XE8之前 .Delphi里面多了個System.Threading的並行庫.
雖然己經有非常棒的第三方並行庫QWorker,但我還是更喜歡官方的東西.
下面是一段使用System.Threading中ITask的代碼
procedure TForm3.SpeedButton1Click(Sender: TObject);
var
tasks: array of ITask;
value: Integer;
LTask:ITask;
X,Y:INTEGER;
begin
Setlength (tasks ,2);
value := 0;
x:=3000;y:=5000;
tasks[0] := TTask.Create (procedure
begin
sleep (3000);
Show(value,x);
end);
tasks[0].Start;
tasks[1] := TTask.Create (procedure
begin
sleep (5000);
Show(value,y);
end);
tasks[1].Start;
TTask.WaitForAll(tasks);
ShowMessage ('全部執行完畢,值是: ' + value.ToString);
end;
這個東東里面己經使用了一個默認的線程池,並用全部用接口實現.內存自動管理,我感覺非常的棒
TTask還實現了兩個類函數
class function TTask.WaitForAl(等待所有的線程執行完畢) 和 class function TTask.WaitForAny(其中一個線程執行完畢)
這是兩個非常好用的實現,如此一來,你就可以知道你的作業是在什么時候己經執行完成了.
