TParallel.&For неверно отрабатывает

ecxel
Дата: 23.09.2019 10:30:20
RadStudio 10.3
Есть код.

procedure TForm1.Button6Click(Sender: TObject);
var ThreadCounter:integer;
begin
//
  try
  TParallel.&For(1, StrToInt(edit2.Text), procedure(i :integer)
    begin
    //
    inc(ThreadCounter);
    end
  );
  except
  Memo1.Lines.Add('Ахт!!!');
  end;
  Memo1.Lines.Add(floatToStr(ThreadCounter));
end;

До 100 итераций всегда делает хорошо при повышении порядка числа итераций начинает сбоить.
на 100000 иногда отрабатывает 20000 раз, иногда 80000. Иногда все 100000.

Непонятно.

Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста.
X-Cite
Дата: 23.09.2019 10:48:03
А синхронизировать доступ к разделяемой переменной кто будет?

    TParallel.&For(1, 100000,
      procedure (i: Int32)
      begin
        TInterlocked.Increment(ThreadCounter);
      end
    );
ecxel
Дата: 23.09.2019 10:51:45
Действительно... Вот затупил!!! Спасибо. Простите!