[Python-Dev] Re: post mortem after threading deadlock?
Guido van Rossum
guido@zope.com
Wed, 25 Jul 2001 18:16:45 -0400
> I've got better advice <wink>: Never use semaphores for anything. Never
> use locks except for dirt-simple one- or two-line critical sections. For
> everything but the latter, always use condition variables. They're the only
> synch protocol I've seen that non-specialist thread programmers can use
> without routinely screwing themselves. The genius of the condvar protocol
> is that, used correctly, you *always* run-time test your crucial assumptions
> about non-local state (and automatically do so under the protection of a
> critical section), and *always* loop back to try again if your hopes or
> assumptions turn out not to be true. This saves you from a universe of
> possible problems with non-local state changing in unanticipated ways.
I believe that Aahz, in his thread tutorial, has even more radical
advice: use the Queue module for all inter-thread communication. It
is even higher level than semaphores, and has the same nice
properties.
--Guido van Rossum (home page: http://www.python.org/~guido/)