projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Microoptimize type-tests on x86oids.
[sbcl.git]
/
doc
/
manual
/
threading.texinfo
diff --git
a/doc/manual/threading.texinfo
b/doc/manual/threading.texinfo
index
7365510
..
f8f77da
100644
(file)
--- a/
doc/manual/threading.texinfo
+++ b/
doc/manual/threading.texinfo
@@
-118,7
+118,7
@@
lockless algorithms.
Our @code{compare-and-swap} is user-extensible using a protocol
similar to @code{setf}, allowing users to add CAS support to new
Our @code{compare-and-swap} is user-extensible using a protocol
similar to @code{setf}, allowing users to add CAS support to new
-places via eg. @code{defcas}.
+places via e.g. @code{defcas}.
At the same time, new atomic operations can be built on top of CAS
using @code{get-cas-expansion}. See @code{atomic-update},
At the same time, new atomic operations can be built on top of CAS
using @code{get-cas-expansion}. See @code{atomic-update},
@@
-139,10
+139,6
@@
thread is allowed to hold the mutex, others which attempt to take it
will be made to wait until it's free. Threads are woken in the order
that they go to sleep.
will be made to wait until it's free. Threads are woken in the order
that they go to sleep.
-There isn't a timeout on mutex acquisition, but the usual WITH-TIMEOUT
-macro (which throws a TIMEOUT condition after n seconds) can be used
-if you want a bounded wait.
-
@lisp
(defpackage :demo (:use "CL" "SB-THREAD" "SB-EXT"))
@lisp
(defpackage :demo (:use "CL" "SB-THREAD" "SB-EXT"))
@@
-162,21
+158,23
@@
if you want a bounded wait.
@end lisp
@include struct-sb-thread-mutex.texinfo
@end lisp
@include struct-sb-thread-mutex.texinfo
+
+@include macro-sb-thread-with-mutex.texinfo
+@include macro-sb-thread-with-recursive-lock.texinfo
+
@include fun-sb-thread-make-mutex.texinfo
@include fun-sb-thread-mutex-name.texinfo
@include fun-sb-thread-make-mutex.texinfo
@include fun-sb-thread-mutex-name.texinfo
+@include fun-sb-thread-mutex-owner.texinfo
@include fun-sb-thread-mutex-value.texinfo
@include fun-sb-thread-grab-mutex.texinfo
@include fun-sb-thread-release-mutex.texinfo
@include fun-sb-thread-mutex-value.texinfo
@include fun-sb-thread-grab-mutex.texinfo
@include fun-sb-thread-release-mutex.texinfo
-@include macro-sb-thread-with-mutex.texinfo
-@include macro-sb-thread-with-recursive-lock.texinfo
-@include fun-sb-thread-get-mutex.texinfo
@node Semaphores
@comment node-name, next, previous, up
@section Semaphores
Semaphores are among other things useful for keeping track of a
@node Semaphores
@comment node-name, next, previous, up
@section Semaphores
Semaphores are among other things useful for keeping track of a
-countable resource, eg. messages in a queue, and sleep when the
+countable resource, e.g. messages in a queue, and sleep when the
resource is exhausted.
@include struct-sb-thread-semaphore.texinfo
resource is exhausted.
@include struct-sb-thread-semaphore.texinfo
@@
-211,7
+209,7
@@
There are three components:
the condition itself (not represented in code)
@item
the condition itself (not represented in code)
@item
-the condition variable (a.k.a waitqueue) which proxies for it
+the condition variable (a.k.a. waitqueue) which proxies for it
@item
a lock to hold while testing the condition
@item
a lock to hold while testing the condition
@@
-295,7
+293,7
@@
and @code{sb-ext:atomic-pop}.
@item
@code{sb-ext:compare-and-swap}.
@item
@item
@code{sb-ext:compare-and-swap}.
@item
-@code{sb-thread:get-mutex}, @code{sb-thread:release-mutex},
+@code{sb-thread:grab-mutex}, @code{sb-thread:release-mutex},
@code{sb-thread:with-mutex} and @code{sb-thread:with-recursive-lock}.
@item
@code{sb-thread:signal-semaphore}, @code{sb-thread:try-semaphore} and
@code{sb-thread:with-mutex} and @code{sb-thread:with-recursive-lock}.
@item
@code{sb-thread:signal-semaphore}, @code{sb-thread:try-semaphore} and