On Saturday, 29 August 2015 at 23:08:45 UTC, Timon Gehr wrote:
On 08/29/2015 04:45 PM, rsw0x wrote:
On Saturday, 29 August 2015 at 14:32:27 UTC, Timon Gehr wrote:
On 08/29/2015 04:20 PM, cym13 wrote:
On Saturday, 29 August 2015 at 14:17:10 UTC, rsw0x wrote:
[...]
After reading all that, I too am convinced that the GC
shouldn't call
the destructor.
But then classes with destructors shouldn't be allowed to be
allocated
on the GC heap in the first place, which is a PITA as well.
(Note that
classes/arrays can have destructors because some component
structs
have them; structs generally assume that their destructors
will be
called.)
make classes with destructors(and structs allocated via new)
have RC
semantics.
RC is an especially eager form of GC, that does not deal with
cycles by default. Why does it help?
The problem is that there's no guarantee the destructor will run
with the GC, no guarantee what thread it will run on, and no
guarantee on when it will run. RC guarantees all three of these
outside of cycles.