On Sat, Aug 9, 2014 at 2:05 AM, Neil D. Cerutti <ne...@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 -- https://mail.python.org/mailman/listinfo/python-list