The macro
unwind-protect-blocking-interrupts-in-cleanups
executes
protected-form
. On exit, whether local or not, the
cleanups
are executed with interrupts blocked.
In compiled code, the macro is equvalent to
(unwind-protect
protected-form
(mp:with-interrupts-blocked cleanup1 cleanup2 ..)
However, in interpreted code the macro is expanded to ensure that the body of
mp:with-interrupts-blocked
actually happens. If the form above is interpreted the evaluator may throw (if the process is killed, for example) before completing macroexpansion of
mp:with-interrupts-blocked
and doing the actual blocking.
current-process-block-interrupts
current-process-unblock-interrupts
unwind-protect-blocking-interrupts
with-interrupts-blocked