Bài toán
Tính tổng của dãy số từ 1 đến 10000
Giải pháp
procedure TForm6.Button1Click(Sender: TObject);
begin
Scheduler.Run(
procedure
var
I: Integer;
begin
for I := 1 to 10000 do
begin
text1.Text := i.ToString;
end;
end
).SyncQueued // thay .Synchronized
.Activate;
end;
Lời giải
Trong code trên, phương thức SyncQueued được sử dụng để thực hiện các phương thức task trong少吃 thread. Nếu thay SyncQueued bằng Synchronized, các phương thức task sẽ được thực hiện trong thread chính, gây ra将进一步 performance loss.
Chính xác hơn
.SyncQueued
Phương thức SyncQueued sử dụng TThread.Queue để chạy các phương thức task. Trong khi đó, phương thức Synchronized sử dụng TThread.Synchronize để chạy các phương thức task trong thread chính.
Ví dụ
Scheduler.Run(
procedure
var
I: Integer;
begin
for I := 1 to 10000 do
begin
text1.Text := i.ToString;
end;
end
).SyncQueued
.Activate;