例如,我想使用一个TParallel.&For
循环来计算 1 到 100000 之间的质数并将所有这些质数保存在AList: TList<Integer>
:
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
AList: TList<Integer>;
LoopResult: Tparallel.TLoopResult;
begin
AList:=TList<Integer>.Create;
TParallel.&For(1, 100000,
procedure(AIndex: Integer)
begin
if IsPrime(AIndex) then
begin
//add the prime number to AList
end;
end);
//show the list
for i := 0 to AList.Count-1 do
begin
Memo1.Lines.Add(IntToStr(AList[i]));
end;
end;
计算可以并行执行而不会出现问题,但它TList
是共享资源。如何以线程安全的方式将确认的素数添加到列表中?