Ответ 1
Вы можете использовать threadvar
с кодом PPL. Внутренне код PPL стоит поверх системных библиотек потоков, поэтому threadvar
работает так, как вы ожидали.
из здесь он говорит
"Ключевое слово 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
с кодом PPL. Внутренне код PPL стоит поверх системных библиотек потоков, поэтому threadvar
работает так, как вы ожидали.