Einzelnen Beitrag anzeigen

Benutzerbild von skyobserver
skyobserver

Registriert seit: 18. Mai 2005
Ort: Ense
114 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

Freigabe von TTask?

  Alt 15. Aug 2017, 14:47
Delphi-Version: 10 Berlin
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
Code:
Tasks[x] := TTask.Create
kein
Code:
Tasks[x].Free
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...!?!
Die größte Enttäuschung für einen Perfektionisten ist die Realität
  Mit Zitat antworten Zitat