X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=contrib%2Fsb-concurrency%2Fsb-concurrency.texinfo;h=8c609b99c87489ea83614402f97f04e3568c8a31;hb=4ba392170e98744f0ef0b8e08a5d42b988f1d0c9;hp=f81223ccd1fb2b6696e968a40d1dbfe27a6dccd1;hpb=ea0735f0b8bab352d6c9797abec19e8c63563cf6;p=sbcl.git diff --git a/contrib/sb-concurrency/sb-concurrency.texinfo b/contrib/sb-concurrency/sb-concurrency.texinfo index f81223c..8c609b9 100644 --- a/contrib/sb-concurrency/sb-concurrency.texinfo +++ b/contrib/sb-concurrency/sb-concurrency.texinfo @@ -22,15 +22,6 @@ Before SBCL 1.0.38, this implementation resided in its own contrib (@pxref{sb-queue}) which is still provided for backwards-compatibility but which has since been deprecated. -@sp 1 -@unnumberedsubsubsec Synopsis: - -@code{enqueue} can be used to add objects to a queue, and -@code{dequeue} retrieves items from a queue in FIFO order. - -@sp 1 -@unnumberedsubsubsec Dictionary: - @include struct-sb-concurrency-queue.texinfo @include fun-sb-concurrency-dequeue.texinfo @@ -48,23 +39,10 @@ but which has since been deprecated. @code{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 @ref{Section sb-concurrency:queue} is that the receiving +difference to @ref{Section sb-concurrency:queue, queues} is that the receiving end may block until a message arrives. @*@* -The implementation is based on the Queue implementation above -(@pxref{Structure sb-concurrency:queue}.) - -@sp 1 -@unnumberedsubsubsec Synopsis: -@code{send-message} can be used to send a message to a mailbox, and -@code{receive-message} retrieves a message from a mailbox, or blocks -until a new message arrives. @code{receive-message-no-hang} is the -non-blocking variant. -@*@* -Messages can be any object. - -@sp 1 -@unnumberedsubsubsec Dictionary: +Built on top of the @ref{Structure sb-concurrency:queue, queue} implementation. @include struct-sb-concurrency-mailbox.texinfo @@ -78,3 +56,40 @@ Messages can be any object. @include fun-sb-concurrency-receive-message-no-hang.texinfo @include fun-sb-concurrency-receive-pending-messages.texinfo @include fun-sb-concurrency-send-message.texinfo + +@page +@anchor{Section sb-concurrency:gate} +@subsection Gates +@cindex Gate + +@code{sb-concurrency:gate} is a synchronization object suitable for when +multiple threads must wait for a single event before proceeding. + +@include struct-sb-concurrency-gate.texinfo + +@include fun-sb-concurrency-close-gate.texinfo +@include fun-sb-concurrency-gate-name.texinfo +@include fun-sb-concurrency-gate-open-p.texinfo +@include fun-sb-concurrency-gatep.texinfo +@include fun-sb-concurrency-make-gate.texinfo +@include fun-sb-concurrency-open-gate.texinfo +@include fun-sb-concurrency-wait-on-gate.texinfo + +@page +@anchor{Section sb-concurrency:frlock} +@subsection Frlocks, aka Fast Read Locks +@cindex Frlock +@cindex Fast Read Lock + +@include struct-sb-concurrency-frlock.texinfo + +@include macro-sb-concurrency-frlock-read.texinfo +@include macro-sb-concurrency-frlock-write.texinfo + +@include fun-sb-concurrency-make-frlock.texinfo +@include fun-sb-concurrency-frlock-name.texinfo + +@include fun-sb-concurrency-frlock-read-begin.texinfo +@include fun-sb-concurrency-frlock-read-end.texinfo +@include fun-sb-concurrency-grab-frlock-write-lock.texinfo +@include fun-sb-concurrency-release-frlock-write-lock.texinfo