X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=contrib%2Fsb-concurrency%2Fqueue.lisp;h=bf0bc9887714427c2097eee48bab0a9e3a103831;hb=f057566fe993f008a9b34dc87b026e7c8ef2611d;hp=5fa70075ad6a9ba20fa712bfe75b260bc6dc74f0;hpb=898c92c45c812861f9e309ae1a5b5b3e7c33c01b;p=sbcl.git diff --git a/contrib/sb-concurrency/queue.lisp b/contrib/sb-concurrency/queue.lisp index 5fa7007..bf0bc98 100644 --- a/contrib/sb-concurrency/queue.lisp +++ b/contrib/sb-concurrency/queue.lisp @@ -25,7 +25,9 @@ (defstruct (queue (:constructor %make-queue (head tail name)) (:copier nil) (:predicate queuep)) - "Lock-free thread safe queue." + "Lock-free thread safe FIFO queue. + +Use ENQUEUE to add objects to the queue, and DEQUEUE to remove them." (head (error "No HEAD.") :type node) (tail (error "No TAIL.") :type node) (name nil)) @@ -117,7 +119,8 @@ and secondary value." (defun list-queue-contents (queue) "Returns the contents of QUEUE as a list without removing them from the -QUEUE. Mainly useful for manual examination of queue state." +QUEUE. Mainly useful for manual examination of queue state, as the list +may be out of date by the time it is returned." (let (all) (labels ((walk (node) ;; Since NEXT pointers are always right, traversing from tail @@ -134,7 +137,7 @@ QUEUE. Mainly useful for manual examination of queue state." (defun queue-count (queue) "Returns the number of objects in QUEUE. Mainly useful for manual examination of queue state, and in PRINT-OBJECT methods: inefficient as it -walks the entire queue." +must walk the entire queue." (let ((n 0)) (declare (unsigned-byte n)) (labels ((walk (node)