[Python-ideas] Ideas towards GIL removal

Josiah Carlson jcarlson at uci.edu
Sat Apr 14 09:21:54 CEST 2007


Greg Ewing <greg.ewing at canterbury.ac.nz> wrote:
> Josiah Carlson wrote:
> > If thread B decrefs the global refcount, and it
> > becomes 0, then it can check the thread refcount and notice it is
> > nonzero and not deallocate, or if it notices that it *is* zero, then
> > since it already has the GIL (necessary to have decrefed the global
> > refcount), it can pass the object to the deallocator.
> 
> The problem with that is the owning thread needs to be
> able to manipulate the local refcount without holding
> any kind of lock. That's the whole point of it.

Certainly, but thread B isn't the owning thread, thread A was the owning
thread, and by virtue of decrefing its thread count to zero, acquiring
the GIL, and checking the global refcount to make sure that either
someone else is responsible for its deallocation (global refcount > 0),
or that thread A is responsible for its deallocation (global refcount ==
0).

 - Josiah




More information about the Python-ideas mailing list