[Guido] > Actually, what Nick describes is *exactly* how one should write code > using a condition variable: > > LOCK > while nothing to do: > UNLOCK > wait for the condition variable (or sleep, or whatever) > LOCK > # here we have something to do with the lock held > remove the to-do item > UNLOCK > > except that the outer LOCK/UNLOCK pair should be using a try/except > and the inner UNLOCK/LOCK pair should too. I don't see how you can do > this easily by rewriting the code; the rewrite would be considerably > ugly (or requires a GOTO :-).
That didn't make much sense to me. If you're using a condition variable `cv`, the way that should be written is: cv.acquire() try: while nothing to do: cv.wait() # which unlocks on entry, and locks before return do something finally: cv.release() IOW, there is no "inner UNLOCK/LOCK" for the user to worry about (although the implementation of wait() has to worry about it). Does with cv: work to replace the outer (== only) acquire/try/finally/release dance? If so, that seems like plenty to me. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com