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;

最佳答案

您当然可以将threadvar与PEOPLE代码一起使用。在内部,PEOPLE代码位于系统线程库的顶部,因此threadvar可以按您期望的那样工作。

08-05 07:17