
On Fri, 13 Apr 2007 08:51:11 +0200, Talin <talin@acm.org> wrote:
Now, all that being said, even if such a GC library were to exist, that is a long way from removal of the GIL, although it is a necessary step. For example, take the case of a dictionary in which more than one thread is inserting values. Clearly, that will require a lock or some other mechanism to prevent corruption of the hash table as it is updated. I think we want to avoid the Java situation where every object has its own lock. Instead, we'd have to require the user to provide a lock around that insertion operation. But what about dictionaries that the user isn't aware of, such as class methods and module contents? In a world without a GIL, what kind of steps need to be taken to insure that shared data structures can be updated without creating chaos?
In the case of hashtables, a nonblocking variant could perhaps be an option. There was a nice article on reddit some time ago: http://blogs.azulsystems.com/cliff/2007/03/a_nonblocking_h.html , the guy claims that it's competitive in speed to non-lock protected (so thread unsafe) implementations. Nonblocking algorithms don't exist for all data structures, but perhaps they exist for most ones that are used in the python interpreter? - Jan