DELPHI XE7 的新功能列表里面增加了並行庫System.Threading, System.SyncObjs。
為什么要增加新的並行庫?
還是為了跨平台。以前要並行編程只能從TThread類繼承進行多線程處理,大家知道TThread類是從WINDOWS的線程API封裝起來的,它封裝的是WINDOWS的多線程的東西,是不能脫離WINDOWS的,當然是不能跨平台的。DELPHI現在走的是原生跨平台的道路,一切DELPHI的基礎類庫都要從只支持WINDOWS改為支持多平台,這是一個龐大而緩慢的工程,近年,大家都看到了易博龍在這方面的努力,在跨平台方面DELPHI已經做出了許多令人驚喜的改進,DELPHI已經不僅僅同WINDOWS捆綁在一起的開發工具。
連同DELPHI新版本提供的一些新語法:泛型,匿名函數。。。。。。
下面是官方的演示代碼:
千記:uses System.Threading, System.SyncObjs;
procedure TForm1.Button1Click(Sender: TObject);
var
tasks: array of ITask;
value: Integer;
begin
value := 0;
tasks := [
TTask.Create(procedure
begin
sleep(1000);
TInterlocked.Add(value, 1000);
end).Start,
TTask.Create(procedure
begin
sleep(1000);
TInterlocked.Add(value, 3000);
end).Start,
TTask.Create(procedure
begin
sleep(1000);
TInterlocked.Add(value, 5000);
end).Start
];
TTask.WaitForAll(tasks);
ShowMessage('All done: ' + value.ToString);
end;
同原來的TTread相比,誰優誰劣?
前面說了新的並行庫只是為了跨平台,如果只基於WINDOWS編程,仍然可以使用TTread類,執行效率,留待諸位實測了。