Delphi threadvar是否适用于Parallel.For?

时间:2017-02-01 10:52:45

标签: delphi

来自here

  

“ThreadVar关键字启动一组变量定义   由线程使用。每个线程都有一个单独的实例   变量,从而避免数据冲突,并保留线程   独立。 “

所以我可以在Parallel.For这样使用吗?

threadvar
    threadID: integer;

procedure TForm5.Button1Click(Sender: TObject);
var
 Tot: Integer;
begin
 TParallel.For(1, Max, procedure (I: Integer)
   begin
     threadID := i;  // each thread gets its own threadID?
     if IsPrime (threadID) then
       TInterlocked.Increment (Tot);
   end);
end;

1 个答案:

答案 0 :(得分:7)

您当然可以将threadvar与PPL代码一起使用。在内部,PPL代码位于系统线程库的顶部,因此threadvar可以正常工作。