Advice wanted on garbage collection of sockets for c++ programmer using D

Moritz Maxeiner via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Jun 28 04:34:17 PDT 2017


On Wednesday, 28 June 2017 at 09:22:07 UTC, Guillaume Piolat 
wrote:
> Deterministic destruction is a _solved_ problem in C++, and a 
> number of users to convert are now coming from C++.

It is also in D, as long as you don't use the GC (which is 
inherently non-deterministic).

>   3. Suggest a systematic, always working, workaround (or 
> language change such as "GC doesn't call ~this). C++ users have 
> no difficulty having an object graph with detailed ownership 
> schemes, that's what they do day in day out.
>
> It's important to have a _simple_ story about resource release, 
> else we will talk about "GC" every day, and hearing about "GC" 
> is bad for marketing.

Requirement: Do not allocate using the GC
Option 1) Use structs with `@disable this`, `@disable 
this(this)`, and a destructor that checks whether the resource 
reference is != invalid resource reference before trying to 
release.
Option 2) Use classes with simple constructor/destructor layout.
If you want to integrate a check that the requirement holds (with 
either class or struct), put `if (gc_inFinalizer) throw 
SomeError` into the class/struct destructor


More information about the Digitalmars-d-learn mailing list