+(defmethod dequeue-all ((q locked-queue))
+ (with-slots (queue mutex waitq) q
+ (with-mutex (mutex)
+ (if (or (null queue)
+ (null (first queue)))
+ (condition-wait waitq mutex))
+ (loop
+ until (null (car queue))
+ collect (car (car queue))
+ do (setf (car queue) (rest (car queue)))))))
+