www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - [feature request] Special method to be called on class instance to ask

reply AnimusPEXUS <animuspexus protonmail.com> writes:
how should it work?:

when GC finds class instance which is good to be collected, it 
calls special function on this instance: `bool 
good_to_collect()`. if function returns true, then on next pass 
GC cleanups object without calling to `good_to_collect()`. if 
function returns false, then GC does nothing with object and 
continues periodically asking object if it's ready to be 
collected.

`good_to_collect()` it self can be used by App, to perform 
cleanups, for instance destroy dependent objects.
Jul 31 2022
next sibling parent AnimusPEXUS <animuspexus protonmail.com> writes:
On Monday, 1 August 2022 at 05:33:02 UTC, AnimusPEXUS wrote:
wark
warn
Jul 31 2022
prev sibling parent reply vit <vit vit.vit> writes:
On Monday, 1 August 2022 at 05:33:02 UTC, AnimusPEXUS wrote:
 how should it work?:

 when GC finds class instance which is good to be collected, it 
 calls special function on this instance: `bool 
 good_to_collect()`. if function returns true, then on next pass 
 GC cleanups object without calling to `good_to_collect()`. if 
 function returns false, then GC does nothing with object and 
 continues periodically asking object if it's ready to be 
 collected.

 `good_to_collect()` it self can be used by App, to perform 
 cleanups, for instance destroy dependent objects.
Why not use GC.addRoot: https://dlang.org/library/core/memory/gc.add_root.html GC.removeRoot: https://dlang.org/library/core/memory/gc.remove_root.html ?
Aug 01 2022
parent reply AnimusPEXUS <animuspexus protonmail.com> writes:
On Monday, 1 August 2022 at 11:21:43 UTC, vit wrote:
 GC.addRoot: GC.removeRoot:
thanks, I know about those. But my point is not just to preserve objects from being GCed, but object's to be notified before GC, so objects could do some additional cleanups.
Aug 01 2022
parent Alexandru Ermicioi <alexandru.ermicioi gmail.com> writes:
On Tuesday, 2 August 2022 at 05:23:14 UTC, AnimusPEXUS wrote:
 On Monday, 1 August 2022 at 11:21:43 UTC, vit wrote:
 GC.addRoot: GC.removeRoot:
thanks, I know about those. But my point is not just to preserve objects from being GCed, but object's to be notified before GC, so objects could do some additional cleanups.
You should be able to use object destructor for that. Just be warned, don't use pointers in code, they may be obsolete already.
Aug 02 2022