'Nabend
Ich habe mich wegen eines Projektes mal an das Thema Multithreading gewagt
Nun habe ich das Problem, dass ich dem WorkerThread Parameter zum rechnen übergebe, aber sobald ich Worker.Resume auf 'True' setzte passiert garnichts. Kann es dadran liegen, dass ich in der .Execute eine andere procedure starte (die die eigentliche Berechnung durchführt) ?
Hier mal ein wenig Code:
Aufruf in main-
unit:
Delphi-Quellcode:
procedure TForm1.Vollbild1Click(Sender: TObject);
var
i: Integer;
Thread: Array of WorkerThread;
begin
SetLength(Thread, GetCPUCount);
for i:=0 to Length(Thread)-1 do begin
Thread[i] := WorkerThread.create(true);
Thread[i].ThreadCount := GetCPUCount;
Thread[i].Y_Min := Y_Min;
Thread[i].Y_Max := Y_Max;
Thread[i].X_Min := X_Min + i * (X_Min + X_Max) / GetCPUCount;
Thread[i].X_Max := Thread[i].X_Min + i * (X_Min + X_Max) / GetCPUCount;
Thread[i].Hoehe := Form1.Height;
Thread[i].Breite := Form1.Width DIV GetCPUCount;
Thread[i].Resume;
end;
end
Bei der WorkerThread.Execute macht es keinen Unterschied ob ich die procedure damit aufrufe, oder ob ich sie direkt dadrin berechne o.o