0.9.2.9: thread objects
[sbcl.git] / src / pcl / low.lisp
index 8a58b8e..d7ee7a9 100644 (file)
 
 #+sb-thread
 (progn
-(defstruct spinlock (value 0))
-(defvar *pcl-lock* (make-spinlock))
+  (defvar *pcl-lock* (sb-thread:make-waitqueue))
 
-(defmacro with-pcl-lock (&body body)
-  `(progn
-    (sb-thread::get-spinlock *pcl-lock* 1 (sb-thread::current-thread-id))
-    (unwind-protect
-       (progn ,@body)
-      (setf (spinlock-value *pcl-lock*) 0))))
-);progn
+  (defmacro with-pcl-lock (&body body)
+    `(sb-thread::with-spinlock (*pcl-lock*)
+      ,@body)))
 
 #-sb-thread
 (defmacro with-pcl-lock (&body body)