アイデアを記述するMCVEは次のとおりです。このAnonymousThreadの実装は正しいですか?
type
TMyRecord = record
FLastResult: double;
procedure DoHeavyMath(Input: double);
end;
var
MyRecordArray:array [0..999] of TMyRecord;
InputData:array [0..999] of double;
implementation
procedure TMyRecord.DoHeavyMath(Input: double);
begin
FLastResult:=Input;//Here should be some math
end;
私は匿名のスレッドを作成していますし、プロセスの数を制限する(スレッド:入力パラメータを受け取り、その変数の一つに格納されたいくつかの結果を計算する方法を持っているクラス/レコードの配列があります)同時に働く。
procedure TForm1.Button1Click(Sender: TObject);
var
ThreadsCounter, i: word;
begin
ThreadsCounter := 0;
for i := 0 to 999 do
begin
while ThreadsCounter >= 4 { or other limit } do
begin
end;
inc(ThreadsCounter);
TThread.CreateAnonymousThread(
procedure
begin
MyRecordArray[i].DoHeavyMath(InputData[i]);
dec(ThreadsCounter)
end).Start;
end;
repeat
until ThreadsCounter = 0;
// return to main thread tasks
end;
このスレッドの実装は正しいですか?
私はあなたのコードをテストしたと仮定し、それが「正しい」と考えているので、この質問を議論の対象外としています。実際にコードレビューを求めています。 – GhostCat