[armedbear-devel] threads:interrupt-thread
Carlos Ungil
carlos.ungil at gmail.com
Fri Sep 6 01:30:14 UTC 2013
Hello,
is there a reason why interrupt-thread doesn't seem to run the requested
function in some cases? The following code tries to run a function in each
existing thread (the variable *output* logs the calls that we try to run
and the ones that are actually run).
(defvar *output*)
(defun test-run ()
(setf *output* nil)
(threads:mapcar-threads
(lambda (thread)
(push (format nil "~A : calling" thread) *output*)
(threads:interrupt-thread thread
(lambda ()
(push (format nil "~A : running" thread) *output*))))))
(defun test-report ()
(format t "~{~A~%~}" (reverse *output*)))
Running in the command line:
CL-USER(5): (threads:make-thread #'test-run :name "TEST-RUN")
#<THREAD "TEST-RUN" {49BBE826}>
CL-USER(6): (test-report)
#<THREAD "TEST-RUN" {49BBE826}> : calling
#<THREAD "interpreter" {409CB8AF}> : calling
I can understand that the thread "TEST-RUN" that I create to run the
function might disappear before it gets to run the function as requested,
or maybe the reason is that a thread can't interrupt itself by design...
But why doesn't the thread "interpreter" run the function?
Running in slime there are many threads present, and most of them will
respond as expected. But "TEST-RUN", "interpreter" and "reader-thread"
won't.
#<THREAD "control-thread" {3C036436}> : calling
#<THREAD "reader-thread" {10A08BAA}> : calling
#<THREAD "swank-indentation-cache-thread" {2A83402}> : calling
#<THREAD "Swank Sentinel" {66E71110}> : calling
#<THREAD "repl-thread" {699D8335}> : calling
#<THREAD "Swank Sentinel" {66E71110}> : running
#<THREAD "TEST-RUN" {4E0267BA}> : calling
#<THREAD "repl-thread" {699D8335}> : running
#<THREAD "auto-flush-thread" {6913E490}> : calling
#<THREAD "interpreter" {1902DFD5}> : calling
#<THREAD "auto-flush-thread" {6913E490}> : running
#<THREAD "swank-indentation-cache-thread" {2A83402}> : running
#<THREAD "control-thread" {3C036436}> : running
Cheers,
Carlos
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/armedbear-devel/attachments/20130906/52a139d5/attachment.html>
More information about the armedbear-devel
mailing list