At 10:40 PM 6/13/2005 +1000, Nick Coghlan wrote: >Hmm, you're right. Also, given implementation of PEP 343, code which >genuinely has to care about this can do so manually: > > with async_exceptions_blocked(): > with critical_resource(): > with async_exceptions_unblocked(): > # Do the real work > >This ensures acquisition of the critical resource is not interrupted. >Even better, the above can be wrapped up in a template and still give >the desired guarantees: > > @stmt_template > def safe_acquisition(resource): > with async_exceptions_blocked(): > with resource(): > with async_exceptions_unblocked(): > yield None > > > with safe_acquisition(critical_resource): > # Do the real work
Ow. My head hurts. :) Seriously, though, wouldn't it make more sense to put the 'with async_exceptions_blocked()' in the __init__ or __enter__ of 'critical_resource'? Or am I still missing something? _______________________________________________ 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