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....