Delphi並行庫System.Threading 之ITask 1


不知什么時候,也許是XE8,也許是XE8之前 .Delphi里面多了個System.Threading的並行庫.

雖然己經有非常棒的第三方並行庫QWorker,但我還是更喜歡官方的東西.

下面是一段使用System.ThreadingITask的代碼

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(其中一個線程執行完畢)

這是兩個非常好用的實現,如此一來,你就可以知道你的作業是在什么時候己經執行完成了.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM