Specifying `blocking` and `timeout` when acquiring lock as a context manager
Chris Angelico
rosuav at gmail.com
Fri Aug 8 12:16:54 EDT 2014
On Sat, Aug 9, 2014 at 2:05 AM, Neil D. Cerutti <neilc at norwich.edu> wrote:
> Perhaps defer release, a la a common Go pattern:
>
> with contextlib.ExitStack() as stack:
> acquired = lock.acquire(blocking=False)
> if acquired:
> stack.callback(lock.release)
> do_stuff
There's a race condition in that - an unexpected exception could
happen between those two. Are you able to set the callback to be a
"release if acquired" atomic operation?
ChrisA
More information about the Python-list
mailing list