CL-USER> (defun worker (mailbox stream) (let ((x 0)) (loop (print x stream) (sleep 1) (let ((message (sb-concurrency:receive-message-no-hang mailbox))) (case (car message) (:set-x (setf x (cadr message))) (:die (return))))))) WORKER CL-USER> (defvar *mailbox* (sb-concurrency:make-mailbox)) *MAILBOX* CL-USER> (sb-thread:make-thread #'worker :arguments (list *mailbox* *standard-output*)) 0 # 0 0 0 0 0 0 CL-USER> (sb-concurrency:send-message *mailbox* '(:set-x 123)) NIL 123 123 123 CL-USER> (sb-concurrency:send-message *mailbox* '(:set-x 321)) NIL 321 321 321 321 CL-USER> (sb-concurrency:send-message *mailbox* '(:die)) 321 NIL