Hallo,
ich beschäftige mich gerade mit paralleler Verarbeitung und habe unter
http://docwiki.embarcadero.com/RADSt...amming_Library
folgendes Code-Beispiel gefunden:
Code:
procedure TForm1.MyButtonClick(Sender: TObject);
var
tasks: array of ITask;
value: Integer;
begin
Setlength (tasks ,2);
value := 0;
tasks[0] := TTask.Create (procedure ()
begin
sleep(3000);
TInterlocked.Add (value, 3000);
end);
tasks[0].Start;
tasks[1] := TTask.Create (procedure ()
begin
sleep (5000);
TInterlocked.Add (value, 5000);
end);
tasks[1].Start;
TTask.WaitForAll(tasks);
ShowMessage ('All done: ' + value.ToString);
end;
Dabei ist mir aufgefallen, daß zu
kein
folgt.
Zuerst dachte ich, man hätte es zu gunsten der Übersicht im Beispiel ausgelassen aber ich habe viele solcher
Beispiele gefunden und nirgens wurde am Ende das TTask-Objekt wieder freigegeben...
Alles schlechter Programmierstiel oder braucht ein Interfaced-Objekt nicht freigegeben zu werden?
Zumal TTask eine Methode "Destroy" implementiert hat...!?!