From: jonas.ma...@elis.ugent.be
To: fpc-devel@lists.freepascal.org
Date: Mon, 22 Sep 2014 17:11:08 +0200
Subject: Re: [fpc-devel] weak referencing (was Suggestion:.....)


I would strongly recommend against that. Referenced and unreferenced objects 
are completely different beasts with different behaviours. If you allow that, 
you get all kinds of problems down the line. E.g. you either have to forbid 
assigning a TRefObject to a TWhateverBase (which runs counter to a very basic 
OOP principle), or allow it and then have the programmer deal with the 
resulting reference counting mess-ups.
Just like Objective-C and C++ classes cannot derive from each other, and just 
like Delphi-style classes and TP-style objects and objcclass and cppclass 
cannot derive from each other, so should reference counted and non-reference 
counted classes not be able to derive from each other. If you want to mix 
reference counted and non-reference counting functionality, use the existing 
interface-based pattern instead, or possibly some kind of delegation 
pattern.------
Indeed, this is a valid point. By the same logic, TRefObject should be a base 
object, should not inherit from TObject and its instance references should not 
be assignable to pointers. I tried to make the last point earlier. 
If you ask me, implicit ref. counting will not eliminate the mess of managing 
what one has created by his own will. If you create it, you are its Creator, so 
you must destroy it :-) But ... as long as TObject stays intact, I am ok with 
whatever happens. 
I will add another comment to the race condition issues: they are easily 
avoided by a single line assembly atomic inc/dec. It however will not resolve 
performance issues where a certain function assigns classes references left and 
right and there are multiple threads. The fact that you can easily protect it 
does not mean that you will retain parallel efficiency. Thread-syncing should 
be left to the programmer to optimize.
Peter                                     
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to