On Wed, 6 May 2020 13:13:24 -0400
John Cowan <co...@ccil.org> wrote:

> The Right Thing is probably to eventually run the GC on a private
> thread, at least when multiple threads are running at all.  That way
> the finalizers run on the same thread that doesn't hold any locks or
> otherwise risk trouble.  That's what the JVM and the CLR do.

+1!

Safe for interrupts.  Better we send them to a dedicated thread (may,
or may not be the same as the finilizer thread; my bet: the same).

> 
> On Wed, May 6, 2020 at 5:42 AM <felix.winkelm...@bevuta.com> wrote:
> 
> > > There might be a situation where a thread is already executing
> > > ##sys#run-pending-finalizers, but has run out of its time slice,
> > > or gc interrupted or something. In this situation running
> > > ##sys#run-pending-finalizers only once might not be enough.  
> >
> > This is basically true, but with threads we make no effort to
> > terminate them properly once the main thread exists - all unjoined
> > threads will die anyway,
> > regardless of what they are currently doing.
> >
> > Also, the interplay between threads and finalizers is more or less
> > undefined - interrupts are executed in whatever thread happens to be
> > active and manually forcing finalizers in a different thread than
> > the main thread is already asking for trouble. This is a known
> > problem of the threading/interrupt system and needs to be solved
> > differently.
> >
> >
> > felix
> >
> >
> >
> >  


Reply via email to