程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi並行庫System.Threading 之ITask 1,system.threading

Delphi並行庫System.Threading 之ITask 1,system.threading

編輯:Delphi

Delphi並行庫System.Threading 之ITask 1,system.threading


不知什麼時候,也許是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(其中一個線程執行完畢)

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved