来自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;
答案 0 :(得分:7)
您当然可以将threadvar
与PPL代码一起使用。在内部,PPL代码位于系统线程库的顶部,因此threadvar
可以正常工作。