[Python-Dev] A bit about the GIL

Antoine Pitrou solipsis at pitrou.net
Mon Apr 1 11:32:12 CEST 2013


On Mon, 1 Apr 2013 01:14:11 +0200
Alfredo Solano Martínez <asolano at icai.es> wrote:
> The logic would then be something like this:
> - when increasing the refcount, a thread writes only to its own subcounter,
> creating one first if necessary.
> - similarly, when decreasing the refcount, there is no need to access other
> subcounters until that subcounter reaches zero.
> - when a subcounter gets to zero, delete it, and read the other subcounters
> to check if it was the last one.

But then you will decrement another subcounter, right? Meaning you need
a lock around all increments / decrements.

> Unfortunately, in a crude test of mine there is already a severe performance
> degradation, and that is without rwlocks.

Yes, there will be. Given how often INCREF and DECREF are called, any
complication of their implementation will significantly decrease
single-threaded performance.

See also



More information about the Python-Dev mailing list