[Bordeaux-threads-devel] condition-variable in clozure cl.
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....
participants (1)
-
박성민