Exploiting Dual Core's with Py_NewInterpreter's separated GIL ?

"Martin v. Löwis" martin at v.loewis.de
Tue Nov 7 15:55:10 EST 2006


Ross Ridge schrieb:
> Martin v. Löwis wrote:
>> How would you propose to fix file_repr to prevent such
>> a race condition?
> 
> The race condition you describe is different from the one Joe Seigh
> described.  It's caused because without GIL access to the file object
> is no longer thread safe, not because reference counting isn't thread
> safe.

Joe's claim (quoting him) was: "Atomic increment and decrement
instructions are not by themselves sufficient to make reference
counting safe."

Rephrasing this in Python terms is "if the GIL is dropped and
incref/decref are made atomic, the reference counting is not
automatically thread-safe". This is what my example demonstrates:
Drop the GIL, and assume an atomic inc/dec, and it won't be
thread-safe.

It's not that the file object becomes thread-unsafe. Instead,
access to the f_name property won't work anymore (as would
access to any other PyObject* field).

You still didn't say what you would suggest to make it thread-safe
again; most likely, you proposal would be to add locking. If I
understand Joe's approach correctly, he has a solution that does
not involve locking (although I don't understand how it works).

Regards,
Martin



More information about the Python-list mailing list