Thema: Delphi Warum ARC abgeschafft?

Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#14

AW: Warum ARC abgeschafft?

  Alt 2. Jun 2020, 15:33
Beispiel Angular / rxjs: Man muss ständig subscriben, um Callbacks zu registrieren. Man muss aber auch unsubscriben, sonst hat man ein memory leak. Wenn jeder im Team immer dran denkt: Alles super.
Das würd ich aber eher als Fehler im Design bzw der Implementierung in rxjs bezeichnen - in Reactive.net musste auch nix unsubscriben, jede subscription isn disposable und die fliegen am Ende der Anwendung weg - klar die subscription ist so lange aktiv, aber das will man ja ggf. Ansonsten merkt man sich das Ergebnis von Subscribe und disposed es wenn die subscription weg soll.


RX ist aber ein gutes Beispiel, was in Delphi (abgesehen von der fast unmöglich implementierbaren generischen API) für ziemliches Kopfzerbrechen sorgt: die Speicherverwaltung für Objekte, die durch so ein Observable wandern. Da das asynchron, parallel und sonst läuft, je nachdem welche Operationen man auf son ein Observable anwendet, ist es einfach nicht möglich das händische manuelle Freigeben zu praktizieren sondern muss mit einem selbst implementierten Mechanismus (über smartpointer oder anders referenzgezählte Objekte) dafür sorgen - das fluppt einfach überall wo GC werkelt wunderbar (jaja, GC hat sein eigenes Päckchen an "tu das halt nicht", aber das haben wir schon an anderer Stelle ad nauseam diskutiert)
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat