[Python-ideas] Remove GIL with CAS instructions?

Sturla Molden sturla at molden.no
Wed Oct 21 01:46:15 CEST 2009


Antoine Pitrou skrev:
> - protect (somehow) the GC when collecting, so that things don't get modified
> under its feet
>   
The GC would have to temporarily suspend all active threads registered 
with the interpreter. E.g. using the SuspendThread function in Windows API.

> - protect INCREFs and DECREFs
>   
Update using CAS (I just showed you C code for this).


> - protect all mutable types (dicts being probably the most performance-critical,
> since they are used for namespaces and class/object attributes and methods)
>   
CAS. Lock-free lists and hash tables exist. We don't need locks to 
protect mutable types and class objects. Just use a lock-free hash-table 
for __dict__ or whatever.

> - protect all static/global data in C modules which have them
>   
Reacquire the GIL before calling functions in C extensions functions. 
The GIL is nice there, but not anywhere else.


> An interesting experiment would be to add all those protections without even
> attempting to remove the GIL, and measure the overhead compared to a regular
> Python.
Yes, one could add a nonsence CAS to existing incref/decref, and measure 
overhead.








More information about the Python-ideas mailing list