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 equivalent 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
LispWorks User Guide and Reference Manual - 13 Feb 2015