XE7 中引入的并行编程库是最受期待的 Delphi 和 C++Builder RTL 内置库之一,至少对我而言是这样。这是 Delphi XE7 中引入的另一个不错的功能。
这是代码。
uses System.Threading,System.SyncObjs;
procedure TFormThreading.Button1Click(Sender: TObject);
var
tasks: array of ITask;
value: Integer;
begin
value := 0;
tasks := [
TTask.Create(procedure
begin
sleep(1000); // 1 seconds
TInterlocked.Add(value, 1000);
end).Start,
TTask.Create(procedure
begin
sleep(3000); // 3 seconds
TInterlocked.Add(value, 3000);
end).Start,
TTask.Create(procedure
begin
sleep(5000); // 5 seconds
TInterlocked.Add(value, 5000);
end).Start
];
TTask.WaitForAll(tasks);
ShowMessage('All done: ' + value.ToString);
end;
此代码配置并启动 3 个并行任务并等待它们的完成。然后使用 ShowMessage 显示结果。
这段代码需要 5 秒才能执行,因为第一秒有 3 个任务在运行,从第二秒到第三秒有 2 个任务在运行,而最后 2 秒只有一个任务在运行。所有的内部线程都由一个线程池管理。[嘿!这意味着并行化!]
Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号
执行时间: 0.27623414993286 seconds