从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
可以按您期望的那样工作。