[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] force finalizers only if finalizers exist
From: |
Jörg F. Wittenberger |
Subject: |
Re: [PATCH] force finalizers only if finalizers exist |
Date: |
Wed, 6 May 2020 21:37:58 +0200 |
On Wed, 6 May 2020 13:13:24 -0400
John Cowan <address@hidden> 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 <address@hidden> 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
> >
> >
> >
> >