D2 weak references
Jason House
jason.james.house at gmail.com
Wed Apr 22 05:36:34 PDT 2009
grauzone Wrote:
> > Is it possible for druntime to expose an option as to whether or not the
> > sweep phase / finalizers should run while all threads are suspended?
>
> But then you can only do boring stuff in the finalizer. Calling any C or
> library function must be avoided, because it can lead to deadlocks. At
> the same time, your code is called at arbitrary times, and anything you
> do will cause race conditions by default. It's like a UNIX signal
> handler: programming in it sucks so much.
I've never had this kind of issue with finalizers, so I have limited appreciation for the argument. In the application I'm working on, I have no need for any functionality in this area except weak reference support.
> Maybe the finalizer register function could take two callbacks: one
> called before threads are resumed, and one after threads are resumed.
> You could use the first callback to zero out the weak reference, while
> the second takes care of advanced functionality, like notifying someone
> that the reference has been collected.
Wouldn't that implicitly require two sweep phases? In my last post, I suggested the possibiluty of a callback in the mark phase. At the moment, I'm thinking one callback at the start of collection and another callback when marking a weakly referenced object would do the trick. Any weakly referenced object not marked after the last collection is invalid
More information about the Digitalmars-d
mailing list