X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftarget-thread.lisp;h=359b0f3c89255c3a1d5ed04617fd57d718d071d0;hb=1b32a547d26cf078ba9f2948edeb27ff91e78f49;hp=2d0271311dff7f79795e22cfa91ee7600818207d;hpb=f6fb4d990ff434408cd6808c244255b4a301eb23;p=sbcl.git diff --git a/src/code/target-thread.lisp b/src/code/target-thread.lisp index 2d02713..359b0f3 100644 --- a/src/code/target-thread.lisp +++ b/src/code/target-thread.lisp @@ -922,6 +922,7 @@ return DEFAULT if given or else signal JOIN-THREAD-ERROR." ,@body)) ;;; Called from the signal handler. +#!-win32 (defun run-interruption () (let ((interruption (with-interruptions-lock (*current-thread*) (pop (thread-interruptions *current-thread*))))) @@ -946,6 +947,12 @@ enable interrupts (GET-MUTEX when contended, for instance) so the first thing to do is usually a WITH-INTERRUPTS or a WITHOUT-INTERRUPTS. Within a thread interrupts are queued, they are run in same the order they were sent." + #!+win32 + (declare (ignore thread)) + #!+win32 + (with-interrupt-bindings + (with-interrupts (funcall function))) + #!-win32 (let ((os-thread (thread-os-thread thread))) (cond ((not os-thread) (error 'interrupt-thread-error :thread thread))