GC-proof resource classes

rsw0x via Digitalmars-d digitalmars-d at puremagic.com
Sun Aug 30 03:10:55 PDT 2015


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.


More information about the Digitalmars-d mailing list