Normally code compiled at safety 0 cannot be preempted because the necessary checks are omitted. This can be overcome by calling
yield at regular intervals. Usually there is no need to call this if you use functions from the
common-lisp package because these are not compiled at safety 0, but for example if you find that preemption is not working in a loop with no function calls,
yield can be useful. Note that
process-allow-scheduling also allows preemption, but also checks the wait functions of other processes.
LispWorks User Guide and Reference Manual - 13 Feb 2015