clozure cl haven't implements condition-variable. so..
(defun bt:make-condition-variable () (ccl:make-semaphore))
but, condition-variable and semaphore are different. right? It can cause problems, I think. Perhaps, It's make meaningless loop.
I just wonder why something like this that you have not implemented in bordeaux-threads
(in-package #:bordeaux-threads)
(defclass condition-variable () ((sem-count :initform 0 :accessor sem-count) (semaphore :initform (ccl:make-semaphore) :reader semaphore)))
(defun make-condition-variable () (make-instance 'condition-variable))
(defun condition-wait (condition-variable lock) (unwind-protect (progn (incf (sem-count condition-variable)) (release-lock lock) (ccl:wait-on-semaphore (semaphore condition-variable))) (acquire-lock lock)))
(defun condition-notify (condition-variable) (when (> (sem-count condition-variable) 0) (decf (sem-count condition-variable)) (ccl:signal-semaphore (semaphore condition-variable))))
I don't know about it....
bordeaux-threads-devel@common-lisp.net