Message132515
| Author |
glglgl |
| Recipients |
glglgl |
| Date |
2011年03月29日.20:08:04 |
| SpamBayes Score |
6.3332764e-06 |
| Marked as misclassified |
No |
| Message-id |
<1301429285.55.0.524593153571.issue11714@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
The acquire() and release() functions of threading.Semaphore do not make use of the try...finally suite as it would be reasonable.
They just do
def acquire(self, blocking=1):
rc = False
self.__cond.acquire()
[...]
self.__cond.release()
return rc
[...]
def release(self):
self.__cond.acquire()
[...]
self.__cond.release()
while IMO it would be appropriate to put a try: after the acquire() calls and a finally: before the release() calls so the lock is not held forever if an exception occurs.
(Feel free to use with self.__cond: instead...)
Especially when Ctrl-C is pressed while acquire() waits, the respective KeyboardInterrupt gets thrown after acquire(), breaking the respective function and the __cond is locked forever because it is never release()d. |
|
History
|
|---|
| Date |
User |
Action |
Args |
| 2011年03月29日 20:08:05 | glglgl | set | recipients:
+ glglgl |
| 2011年03月29日 20:08:05 | glglgl | set | messageid: <1301429285.55.0.524593153571.issue11714@psf.upfronthosting.co.za> |
| 2011年03月29日 20:08:05 | glglgl | link | issue11714 messages |
| 2011年03月29日 20:08:04 | glglgl | create |
|