[Python-Dev] Proposed addition to threading module (original) (raw)
Tim Peters tim.peters at gmail.com
Mon Apr 24 21:10:29 CEST 2006
- Previous message: [Python-Dev] Proposed addition to threading module - released
- Next message: [Python-Dev] Proposed addition to threading module - released
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
[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.
- Previous message: [Python-Dev] Proposed addition to threading module - released
- Next message: [Python-Dev] Proposed addition to threading module - released
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]