the openmcl backend was using ccl:process-wait for the control thread which would spike cpu usage while idling. (and more annoyingly cause the fans on my powerbook to spin up)
i added a semaphore and use that instead to signal new data to be received.
...bryan
Index: swank-openmcl.lisp =================================================================== RCS file: /project/slime/cvsroot/slime/swank-openmcl.lisp,v retrieving revision 1.58 diff -u -r1.58 swank-openmcl.lisp --- swank-openmcl.lisp 31 Jan 2004 15:07:35 -0000 1.58 +++ swank-openmcl.lisp 4 Feb 2004 21:38:13 -0000 @@ -590,6 +590,7 @@
(defstruct (mailbox (:conc-name mailbox.)) (mutex (ccl:make-lock "thread mailbox")) + (semaphore (ccl:make-semaphore)) (queue '() :type list))
(defimplementation spawn (fn &key name) @@ -640,11 +641,12 @@ (mutex (mailbox.mutex mbox))) (ccl:with-lock-grabbed (mutex) (setf (mailbox.queue mbox) - (nconc (mailbox.queue mbox) (list message)))))) + (nconc (mailbox.queue mbox) (list message))) + (ccl:signal-semaphore (mailbox.semaphore mbox)))))
(defimplementation receive () (let* ((mbox (mailbox ccl:*current-process*)) (mutex (mailbox.mutex mbox))) - (ccl:process-wait "receive" #'mailbox.queue mbox) + (ccl:wait-on-semaphore (mailbox.semaphore mbox)) (ccl:with-lock-grabbed (mutex) (pop (mailbox.queue mbox)))))
"bryan o'connor" bryan-slime@lunch.org writes:
the openmcl backend was using ccl:process-wait for the control thread which would spike cpu usage while idling. (and more annoyingly cause the fans on my powerbook to spin up)
i added a semaphore and use that instead to signal new data to be received.
Patch applied. Thanks!
Helmut.