[Python-Dev] Pythonic concurrency
Bruce Eckel
BruceEckel-Python3234 at mailblocks.com
Tue Oct 11 18:53:02 CEST 2005
> Java's condition variables don't (didn't? has this been fixed?) quite
> work. The emphasis on portability and the resulting notions of
> red/green threading packages at the beginning didn't help either.
> Read Allen Holub's book. And Doug Lea's book. I understand much of
> this has been addressed with a new package in Java 1.5.
Not only are there significant new library components in
java.util.concurrent in J2SE5, but perhaps more important is the new
memory model that deals with issues that are (especially) revealed in
multiprocessor environments. The new memory model represents new work
in the computer science field; apparently the original paper is
written by Ph.D.s and is a bit too theoretical for the normal person
to follow. But the smart threading guys studied this and came up with
the new Java memory model -- so that volatile, for example, which
didn't work quite right before, does now. This is part of J2SE5, and
this work is being incorporated into the upcoming C++0x.
Java concurrency is certainly one of the bad examples of language
design. Apparently, they grabbed stuff from C++ (mostly the volatile
keyword) and combined it with what they new about pthreads, and
decided that being able to declare a method as synchronized made the
whole thing object-oriented. But you can see how ill-thought-out the
design was because in later versions of Java some fundamental methods:
stop(), suspend(), resume() and destroy(), were deprecated because ...
oops, we didn't really think those out very well. And then finally,
with J2SE5, it *appears* that all the kinks have been fixed, but only
with some really smart folks like Doug Lea, Brian Goetz, and that
gang, working long and hard on all these issues and (we hope) figuring
them all out.
I think threading *can* be much simpler, and I *want* it to be that
way in Python. But that can only happen if the right model is chosen,
and that model is not pthreads. People migrate to pthreads if they
already understand it and so it might seem "simple" to them because of
that. But I think we need something that supports an object-oriented
approach to concurrency that doesn't prevent beginners from using it
safely.
Bruce Eckel
More information about the Python-Dev
mailing list