sb-concurrency
==============

Additional data structures, synchronization primitives and tools for concurrent programming. Similiar to Java's java.util.concurrent package.

Queue
-----

sb-concurrency:queue is a lock-free, thread-safe FIFO queue datatype. The implementation is based on An Optimistic Approach to Lock-Free FIFO Queues by Edya Ladan-Mozes and Nir Shavit. Before SBCL 1.0.38, this implementation resided in its own contrib (see sb-queue) which is still provided for backwards-compatibility but which has since been deprecated.

     [file struct-sb-concurrency-queue.texinfo not included]

     [file fun-sb-concurrency-dequeue.texinfo not included]
     [file fun-sb-concurrency-enqueue.texinfo not included]
     [file fun-sb-concurrency-list-queue-contents.texinfo not included]
     [file fun-sb-concurrency-make-queue.texinfo not included]
     [file fun-sb-concurrency-queue-count.texinfo not included]
     [file fun-sb-concurrency-queue-empty-p.texinfo not included]
     [file fun-sb-concurrency-queue-name.texinfo not included]
     [file fun-sb-concurrency-queuep.texinfo not included]

Mailbox (lock-free)
-------------------

sb-concurrency:mailbox is a lock-free message queue where one or multiple ends can send messages to one or multiple receivers. The difference to queues is that the receiving end may block until a message arrives. Built on top of the queue implementation.

     [file struct-sb-concurrency-mailbox.texinfo not included]

     [file fun-sb-concurrency-list-mailbox-messages.texinfo not included]
     [file fun-sb-concurrency-mailbox-count.texinfo not included]
     [file fun-sb-concurrency-mailbox-empty-p.texinfo not included]
     [file fun-sb-concurrency-mailbox-name.texinfo not included]
     [file fun-sb-concurrency-mailboxp.texinfo not included]
     [file fun-sb-concurrency-make-mailbox.texinfo not included]
     [file fun-sb-concurrency-receive-message.texinfo not included]
     [file fun-sb-concurrency-receive-message-no-hang.texinfo not included]
     [file fun-sb-concurrency-receive-pending-messages.texinfo not included]
     [file fun-sb-concurrency-send-message.texinfo not included]

Gates
-----

sb-concurrency:gate is a synchronization object suitable for when multiple threads must wait for a single event before proceeding.

     [file struct-sb-concurrency-gate.texinfo not included]

     [file fun-sb-concurrency-close-gate.texinfo not included]
     [file fun-sb-concurrency-gate-name.texinfo not included]
     [file fun-sb-concurrency-gate-open-p.texinfo not included]
     [file fun-sb-concurrency-gatep.texinfo not included]
     [file fun-sb-concurrency-make-gate.texinfo not included]
     [file fun-sb-concurrency-open-gate.texinfo not included]
     [file fun-sb-concurrency-wait-on-gate.texinfo not included]