GC conservatism -- again

Sean Kelly sean at invisibleduck.org
Thu Dec 30 12:32:10 PST 2010


Andrei Alexandrescu Wrote:

> On 12/30/10 12:38 PM, Sean Kelly wrote:
> > Andrei Alexandrescu Wrote:
> >
> >> On 12/30/10 11:19 AM, Sean Kelly wrote:
> >>> Adam Ruppe Wrote:
> >>>
> >>>> On 12/27/10, Steven Schveighoffer<schveiguy at yahoo.com>   wrote:
> >>>>> What about tools to make deallocation easier?  For example, we have
> >>>>> scope(exit) that you could potentially use to ensure a memory block is
> >>>>> deallocated on exit from a scope, what about a thread exit?
> >>>>
> >>>> It seems to me that the simplest thing might simply be a list of delegates stored
> >>>> with the thread:
> >>>>
> >>>> thread.onexit ~= { free(whatever); };
> >>>
> >>> Already possible via static dtors.
> >>
> >> Not dynamically...
> >
> > void*[] toFree;
> >
> > static ~this() {
> >      foreach(e; toFree)
> >          free(e);
> > }
> >
> > What am I missing?
> 
> I'm thinking of an API that allows people to dynamically add "to do" 
> stuff, a la C's atexit(). Yours above is dynamic (because client code 
> can append to toFree) but is hand-written by the client.

Hand written but trivial.  It would be easy enough to add the feature to core.runtime or core.thread though.


More information about the Digitalmars-d mailing list