
On Mon, Oct 20, 2008 at 2:33 PM, Leonardo Santagada <santagada@gmail.com> wrote:
On Oct 20, 2008, at 6:12 PM, Adam Olsen wrote:
Stepping back a bit, there's two distinct problems to solve: 1) Making threading easier 2) Removing the GIL
#1 can be done by things like monitors and transactions (the two are complementary). #2 at its core is about refcounting, and transactions are irrelevant there — you need to switch to a tracing-based GC implementation
PyPy has a real GC and doesn't depend on refcount already. So that is not the only thing needed to accomplish #2, you need to lock mutable data containers so concurrent threads don't leave them in a broken state. This is the part not ready on PyPy yet.
But it is probably easier to fix on PyPy than on CPython.
Although #2 does depend on it, providing sane and safe semantics for the datastructures is the domain of #1. Keep in mind that very little in python actually needs implicit concurrent mutation (class and module dicts do). Implicit thread interaction is the fundamental problem of the current threading models, for all the reasons spelled out in the zen. -- Adam Olsen, aka Rhamphoryncus