Advice wanted on garbage collection of sockets for c++ programmer using D
Moritz Maxeiner via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Jun 27 11:04:36 PDT 2017
On Tuesday, 27 June 2017 at 15:24:00 UTC, Steven Schveighoffer
wrote:
> On 6/27/17 9:25 AM, Guillaume Piolat wrote:
>> On Tuesday, 27 June 2017 at 13:11:10 UTC, Steven Schveighoffer
>> wrote:
>>> But I would use a close method, and not destroy(obj). The
>>> reason is because often times, you have wrapper types around
>>> your socket type, and just one extra level of indirection
>>> means the destructor cannot be used to clean up the socket
>>> (you are not allowed to access GC-allocated resources in a
>>> destructor).
>>
>> All destructor restrictions do not apply when it's not called
>> by the GC.
>>
>> There really are two categories of destructors: called by the
>> GC and called deterministically. Their usage should not
>> overlap.
>
> Yes, Tango solved this by having a separate "finalize()"
> method. I wish we had something like this.
Well, technically speaking the `~this` for D classes *is* a
finalizer that you may optionally manually call (e.g. via
destroy).
It would be nice, though, to change class `~this` into a
destructor and move the finalization into an extra method like
`finalize`. Write a DIP?
More information about the Digitalmars-d-learn
mailing list