This is the bordeaux-threads Reference Manual, version 0.9.4, generated automatically by Declt version 4.0 beta 2 "William Riker" on Sun Dec 15 04:27:29 2024 GMT+0.
bordeaux-threads/bordeaux-threads.asd
bordeaux-threads/api-v1/pkgdcl.lisp
bordeaux-threads/api-v1/bordeaux-threads.lisp
bordeaux-threads/api-v1/impl-abcl.lisp
bordeaux-threads/api-v1/impl-allegro.lisp
bordeaux-threads/api-v1/impl-clasp.lisp
bordeaux-threads/api-v1/impl-clisp.lisp
bordeaux-threads/api-v1/impl-clozure.lisp
bordeaux-threads/api-v1/impl-cmucl.lisp
bordeaux-threads/api-v1/impl-corman.lisp
bordeaux-threads/api-v1/impl-ecl.lisp
bordeaux-threads/api-v1/impl-genera.lisp
bordeaux-threads/api-v1/impl-mezzano.lisp
bordeaux-threads/api-v1/impl-mkcl.lisp
bordeaux-threads/api-v1/impl-lispworks.lisp
bordeaux-threads/api-v1/impl-mcl.lisp
bordeaux-threads/api-v1/impl-sbcl.lisp
bordeaux-threads/api-v1/impl-scl.lisp
bordeaux-threads/api-v1/impl-lispworks-condition-variables.lisp
bordeaux-threads/api-v1/condition-variables.lisp
bordeaux-threads/api-v1/default-implementations.lisp
bordeaux-threads/api-v2/pkgdcl.lisp
bordeaux-threads/api-v2/bordeaux-threads.lisp
bordeaux-threads/api-v2/timeout-interrupt.lisp
bordeaux-threads/api-v2/impl-abcl.lisp
bordeaux-threads/api-v2/impl-allegro.lisp
bordeaux-threads/api-v2/impl-clasp.lisp
bordeaux-threads/api-v2/impl-clisp.lisp
bordeaux-threads/api-v2/impl-clozure.lisp
bordeaux-threads/api-v2/impl-cmucl.lisp
bordeaux-threads/api-v2/impl-corman.lisp
bordeaux-threads/api-v2/impl-ecl.lisp
bordeaux-threads/api-v2/impl-genera.lisp
bordeaux-threads/api-v2/impl-mezzano.lisp
bordeaux-threads/api-v2/impl-mkcl.lisp
bordeaux-threads/api-v2/impl-lispworks.lisp
bordeaux-threads/api-v2/impl-mcl.lisp
bordeaux-threads/api-v2/impl-sbcl.lisp
bordeaux-threads/api-v2/impl-scl.lisp
bordeaux-threads/api-v2/atomics.lisp
bordeaux-threads/api-v2/atomics-java.lisp
bordeaux-threads/api-v2/api-locks.lisp
bordeaux-threads/api-v2/api-threads.lisp
bordeaux-threads/api-v2/api-semaphores.lisp
bordeaux-threads/api-v2/impl-condition-variables-semaphores.lisp
bordeaux-threads/api-v2/api-condition-variables.lisp
The main system appears first, followed by any subsystem dependency.
bordeaux-threads
Bordeaux Threads makes writing portable multi-threaded apps simple.
Stelian Ionescu <sionescu@cddr.org>
MIT
0.9.4
alexandria
(system).
global-vars
(system).
trivial-features
(system).
trivial-garbage
(system).
version.sexp
(file).
api-v1
(module).
api-v2
(module).
Modules are listed depth-first from the system components tree.
bordeaux-threads/api-v1
bordeaux-threads
(system).
pkgdcl.lisp
(file).
bordeaux-threads.lisp
(file).
impl-abcl.lisp
(file).
impl-allegro.lisp
(file).
impl-clasp.lisp
(file).
impl-clisp.lisp
(file).
impl-clozure.lisp
(file).
impl-cmucl.lisp
(file).
impl-corman.lisp
(file).
impl-ecl.lisp
(file).
impl-genera.lisp
(file).
impl-mezzano.lisp
(file).
impl-mkcl.lisp
(file).
impl-lispworks.lisp
(file).
impl-mcl.lisp
(file).
impl-sbcl.lisp
(file).
impl-scl.lisp
(file).
impl-lispworks-condition-variables.lisp
(file).
condition-variables.lisp
(file).
default-implementations.lisp
(file).
bordeaux-threads/api-v2
api-v1
(module).
bordeaux-threads
(system).
pkgdcl.lisp
(file).
bordeaux-threads.lisp
(file).
timeout-interrupt.lisp
(file).
impl-abcl.lisp
(file).
impl-allegro.lisp
(file).
impl-clasp.lisp
(file).
impl-clisp.lisp
(file).
impl-clozure.lisp
(file).
impl-cmucl.lisp
(file).
impl-corman.lisp
(file).
impl-ecl.lisp
(file).
impl-genera.lisp
(file).
impl-mezzano.lisp
(file).
impl-mkcl.lisp
(file).
impl-lispworks.lisp
(file).
impl-mcl.lisp
(file).
impl-sbcl.lisp
(file).
impl-scl.lisp
(file).
atomics.lisp
(file).
atomics-java.lisp
(file).
api-locks.lisp
(file).
api-threads.lisp
(file).
api-semaphores.lisp
(file).
impl-condition-variables-semaphores.lisp
(file).
api-condition-variables.lisp
(file).
Files are sorted by type and then listed depth-first from the systems components trees.
bordeaux-threads/bordeaux-threads.asd
bordeaux-threads/api-v1/pkgdcl.lisp
bordeaux-threads/api-v1/bordeaux-threads.lisp
bordeaux-threads/api-v1/impl-abcl.lisp
bordeaux-threads/api-v1/impl-allegro.lisp
bordeaux-threads/api-v1/impl-clasp.lisp
bordeaux-threads/api-v1/impl-clisp.lisp
bordeaux-threads/api-v1/impl-clozure.lisp
bordeaux-threads/api-v1/impl-cmucl.lisp
bordeaux-threads/api-v1/impl-corman.lisp
bordeaux-threads/api-v1/impl-ecl.lisp
bordeaux-threads/api-v1/impl-genera.lisp
bordeaux-threads/api-v1/impl-mezzano.lisp
bordeaux-threads/api-v1/impl-mkcl.lisp
bordeaux-threads/api-v1/impl-lispworks.lisp
bordeaux-threads/api-v1/impl-mcl.lisp
bordeaux-threads/api-v1/impl-sbcl.lisp
bordeaux-threads/api-v1/impl-scl.lisp
bordeaux-threads/api-v1/impl-lispworks-condition-variables.lisp
bordeaux-threads/api-v1/condition-variables.lisp
bordeaux-threads/api-v1/default-implementations.lisp
bordeaux-threads/api-v2/pkgdcl.lisp
bordeaux-threads/api-v2/bordeaux-threads.lisp
bordeaux-threads/api-v2/timeout-interrupt.lisp
bordeaux-threads/api-v2/impl-abcl.lisp
bordeaux-threads/api-v2/impl-allegro.lisp
bordeaux-threads/api-v2/impl-clasp.lisp
bordeaux-threads/api-v2/impl-clisp.lisp
bordeaux-threads/api-v2/impl-clozure.lisp
bordeaux-threads/api-v2/impl-cmucl.lisp
bordeaux-threads/api-v2/impl-corman.lisp
bordeaux-threads/api-v2/impl-ecl.lisp
bordeaux-threads/api-v2/impl-genera.lisp
bordeaux-threads/api-v2/impl-mezzano.lisp
bordeaux-threads/api-v2/impl-mkcl.lisp
bordeaux-threads/api-v2/impl-lispworks.lisp
bordeaux-threads/api-v2/impl-mcl.lisp
bordeaux-threads/api-v2/impl-sbcl.lisp
bordeaux-threads/api-v2/impl-scl.lisp
bordeaux-threads/api-v2/atomics.lisp
bordeaux-threads/api-v2/atomics-java.lisp
bordeaux-threads/api-v2/api-locks.lisp
bordeaux-threads/api-v2/api-threads.lisp
bordeaux-threads/api-v2/api-semaphores.lisp
bordeaux-threads/api-v2/impl-condition-variables-semaphores.lisp
bordeaux-threads/api-v2/api-condition-variables.lisp
bordeaux-threads/bordeaux-threads.asd
bordeaux-threads
(system).
bordeaux-threads/api-v1/bordeaux-threads.lisp
pkgdcl.lisp
(file).
api-v1
(module).
*default-special-bindings*
(special variable).
*standard-io-bindings*
(special variable).
*supports-threads-p*
(special variable).
%semaphore
(structure).
%semaphore-condition-variable
(reader).
(setf %semaphore-condition-variable)
(writer).
%semaphore-counter
(reader).
(setf %semaphore-counter)
(writer).
%semaphore-lock
(reader).
(setf %semaphore-lock)
(writer).
%semaphore-p
(function).
*no-condition-wait-timeout-message*
(special variable).
binding-default-specials
(function).
bordeaux-mp-condition
(condition).
copy-%semaphore
(function).
defbindings
(macro).
define-condition-wait-compiler-macro
(macro).
make-%semaphore
(function).
make-threading-support-error
(generic function).
mark-supported
(function).
message
(reader method).
signal-error-if-condition-wait-timeout
(function).
signal-error-if-current-thread
(function).
bordeaux-threads/api-v1/impl-abcl.lisp
:armedbear
bordeaux-threads.lisp
(file).
api-v1
(module).
bordeaux-threads/api-v1/impl-allegro.lisp
:allegro
impl-abcl.lisp
(file).
bordeaux-threads.lisp
(file).
api-v1
(module).
bordeaux-threads/api-v1/impl-clasp.lisp
:clasp
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
bordeaux-threads.lisp
(file).
api-v1
(module).
bordeaux-threads/api-v1/impl-clisp.lisp
:clisp
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
bordeaux-threads.lisp
(file).
api-v1
(module).
bordeaux-threads/api-v1/impl-clozure.lisp
:openmcl
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
bordeaux-threads.lisp
(file).
api-v1
(module).
bordeaux-threads/api-v1/impl-cmucl.lisp
:cmu
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
bordeaux-threads.lisp
(file).
api-v1
(module).
bordeaux-threads/api-v1/impl-corman.lisp
:corman
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
bordeaux-threads.lisp
(file).
api-v1
(module).
bordeaux-threads/api-v1/impl-ecl.lisp
:ecl
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
bordeaux-threads.lisp
(file).
api-v1
(module).
bordeaux-threads/api-v1/impl-genera.lisp
:genera
impl-ecl.lisp
(file).
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
bordeaux-threads.lisp
(file).
api-v1
(module).
bordeaux-threads/api-v1/impl-mezzano.lisp
:mezzano
impl-genera.lisp
(file).
impl-ecl.lisp
(file).
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
bordeaux-threads.lisp
(file).
api-v1
(module).
bordeaux-threads/api-v1/impl-mkcl.lisp
:mkcl
impl-mezzano.lisp
(file).
impl-genera.lisp
(file).
impl-ecl.lisp
(file).
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
bordeaux-threads.lisp
(file).
api-v1
(module).
bordeaux-threads/api-v1/impl-lispworks.lisp
:lispworks
impl-mkcl.lisp
(file).
impl-mezzano.lisp
(file).
impl-genera.lisp
(file).
impl-ecl.lisp
(file).
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
bordeaux-threads.lisp
(file).
api-v1
(module).
bordeaux-threads/api-v1/impl-mcl.lisp
:digitool
impl-lispworks.lisp
(file).
impl-mkcl.lisp
(file).
impl-mezzano.lisp
(file).
impl-genera.lisp
(file).
impl-ecl.lisp
(file).
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
bordeaux-threads.lisp
(file).
api-v1
(module).
bordeaux-threads/api-v1/impl-sbcl.lisp
:sbcl
impl-mcl.lisp
(file).
impl-lispworks.lisp
(file).
impl-mkcl.lisp
(file).
impl-mezzano.lisp
(file).
impl-genera.lisp
(file).
impl-ecl.lisp
(file).
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
bordeaux-threads.lisp
(file).
api-v1
(module).
acquire-lock
(function).
all-threads
(function).
condition-notify
(function).
condition-wait
(function).
current-thread
(function).
destroy-thread
(function).
interrupt-thread
(function).
join-thread
(function).
lock
(type).
lock-p
(function).
make-condition-variable
(function).
make-lock
(function).
make-recursive-lock
(function).
make-semaphore
(function).
recursive-lock
(type).
recursive-lock-p
(function).
release-lock
(function).
semaphore
(type).
signal-semaphore
(function).
thread
(type).
thread-alive-p
(function).
thread-name
(function).
thread-yield
(function).
threadp
(function).
timeout
(type).
wait-on-semaphore
(function).
with-lock-held
(macro).
with-recursive-lock-held
(macro).
with-timeout
(macro).
%make-thread
(function).
bordeaux-threads/api-v1/impl-scl.lisp
:scl
impl-sbcl.lisp
(file).
impl-mcl.lisp
(file).
impl-lispworks.lisp
(file).
impl-mkcl.lisp
(file).
impl-mezzano.lisp
(file).
impl-genera.lisp
(file).
impl-ecl.lisp
(file).
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
bordeaux-threads.lisp
(file).
api-v1
(module).
bordeaux-threads/api-v1/impl-lispworks-condition-variables.lisp
(:and :lispworks (:or :lispworks4 :lispworks5))
impl-scl.lisp
(file).
impl-sbcl.lisp
(file).
impl-mcl.lisp
(file).
impl-lispworks.lisp
(file).
impl-mkcl.lisp
(file).
impl-mezzano.lisp
(file).
impl-genera.lisp
(file).
impl-ecl.lisp
(file).
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
bordeaux-threads.lisp
(file).
api-v1
(module).
bordeaux-threads/api-v1/condition-variables.lisp
:digitool
impl-lispworks-condition-variables.lisp
(file).
impl-scl.lisp
(file).
impl-sbcl.lisp
(file).
impl-mcl.lisp
(file).
impl-lispworks.lisp
(file).
impl-mkcl.lisp
(file).
impl-mezzano.lisp
(file).
impl-genera.lisp
(file).
impl-ecl.lisp
(file).
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
bordeaux-threads.lisp
(file).
api-v1
(module).
bordeaux-threads/api-v1/default-implementations.lisp
condition-variables.lisp
(file).
impl-lispworks-condition-variables.lisp
(file).
impl-scl.lisp
(file).
impl-sbcl.lisp
(file).
impl-mcl.lisp
(file).
impl-lispworks.lisp
(file).
impl-mkcl.lisp
(file).
impl-mezzano.lisp
(file).
impl-genera.lisp
(file).
impl-ecl.lisp
(file).
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
bordeaux-threads.lisp
(file).
api-v1
(module).
acquire-recursive-lock
(function).
make-thread
(function).
release-recursive-lock
(function).
semaphore-p
(function).
start-multiprocessing
(function).
bordeaux-threads/api-v2/bordeaux-threads.lisp
pkgdcl.lisp
(file).
api-v2
(module).
+supports-threads-p+
(constant).
abnormal-exit
(condition).
abnormal-exit-condition
(reader method).
bordeaux-threads-error
(condition).
not-implemented
(condition).
*not-implemented*
(special variable).
bool
(function).
bordeaux-threads-simple-error
(condition).
bt-error
(function).
implemented-p
(function).
implemented-p*
(function).
keyarg-not-implemented
(condition).
keyarg-not-implemented-keyarg
(reader method).
keyarg-not-implemented-operation
(reader method).
mark-not-implemented
(function).
operation-not-implemented
(condition).
operation-not-implemented-operation
(reader method).
signal-not-implemented
(function).
bordeaux-threads/api-v2/timeout-interrupt.lisp
bordeaux-threads.lisp
(file).
api-v2
(module).
bordeaux-threads/api-v2/impl-abcl.lisp
:abcl
timeout-interrupt.lisp
(file).
api-v2
(module).
bordeaux-threads/api-v2/impl-allegro.lisp
:allegro
impl-abcl.lisp
(file).
timeout-interrupt.lisp
(file).
api-v2
(module).
bordeaux-threads/api-v2/impl-clasp.lisp
:clasp
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
timeout-interrupt.lisp
(file).
api-v2
(module).
bordeaux-threads/api-v2/impl-clisp.lisp
:clisp
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
timeout-interrupt.lisp
(file).
api-v2
(module).
bordeaux-threads/api-v2/impl-clozure.lisp
:clozure
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
timeout-interrupt.lisp
(file).
api-v2
(module).
bordeaux-threads/api-v2/impl-cmucl.lisp
:cmu
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
timeout-interrupt.lisp
(file).
api-v2
(module).
bordeaux-threads/api-v2/impl-corman.lisp
:corman
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
timeout-interrupt.lisp
(file).
api-v2
(module).
bordeaux-threads/api-v2/impl-ecl.lisp
:ecl
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
timeout-interrupt.lisp
(file).
api-v2
(module).
bordeaux-threads/api-v2/impl-genera.lisp
:genera
impl-ecl.lisp
(file).
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
timeout-interrupt.lisp
(file).
api-v2
(module).
bordeaux-threads/api-v2/impl-mezzano.lisp
:mezzano
impl-genera.lisp
(file).
impl-ecl.lisp
(file).
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
timeout-interrupt.lisp
(file).
api-v2
(module).
bordeaux-threads/api-v2/impl-mkcl.lisp
:mkcl
impl-mezzano.lisp
(file).
impl-genera.lisp
(file).
impl-ecl.lisp
(file).
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
timeout-interrupt.lisp
(file).
api-v2
(module).
bordeaux-threads/api-v2/impl-lispworks.lisp
:lispworks
impl-mkcl.lisp
(file).
impl-mezzano.lisp
(file).
impl-genera.lisp
(file).
impl-ecl.lisp
(file).
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
timeout-interrupt.lisp
(file).
api-v2
(module).
bordeaux-threads/api-v2/impl-mcl.lisp
:digitool
impl-lispworks.lisp
(file).
impl-mkcl.lisp
(file).
impl-mezzano.lisp
(file).
impl-genera.lisp
(file).
impl-ecl.lisp
(file).
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
timeout-interrupt.lisp
(file).
api-v2
(module).
bordeaux-threads/api-v2/impl-sbcl.lisp
:sbcl
impl-mcl.lisp
(file).
impl-lispworks.lisp
(file).
impl-mkcl.lisp
(file).
impl-mezzano.lisp
(file).
impl-genera.lisp
(file).
impl-ecl.lisp
(file).
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
timeout-interrupt.lisp
(file).
api-v2
(module).
condition-variable
(type).
native-lock
(type).
native-recursive-lock
(type).
semaphore
(type).
with-timeout
(macro).
%acquire-lock
(function).
%acquire-recursive-lock
(function).
%all-threads
(function).
%condition-broadcast
(function).
%condition-notify
(function).
%condition-wait
(function).
%current-thread
(function).
%destroy-thread
(function).
%interrupt-thread
(function).
%join-thread
(function).
%lock
(function).
%make-condition-variable
(function).
%make-lock
(function).
%make-recursive-lock
(function).
%make-semaphore
(function).
%make-thread
(function).
%release-lock
(function).
%release-recursive-lock
(function).
%signal-semaphore
(function).
%thread-alive-p
(function).
%thread-name
(function).
%thread-yield
(function).
%timedlock
(function).
%try-lock
(function).
%wait-on-semaphore
(function).
%with-lock
(macro).
%with-recursive-lock
(macro).
native-thread
(type).
bordeaux-threads/api-v2/impl-scl.lisp
:scl
impl-sbcl.lisp
(file).
impl-mcl.lisp
(file).
impl-lispworks.lisp
(file).
impl-mkcl.lisp
(file).
impl-mezzano.lisp
(file).
impl-genera.lisp
(file).
impl-ecl.lisp
(file).
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
timeout-interrupt.lisp
(file).
api-v2
(module).
bordeaux-threads/api-v2/atomics.lisp
(:not :abcl)
impl-scl.lisp
(file).
impl-sbcl.lisp
(file).
impl-mcl.lisp
(file).
impl-lispworks.lisp
(file).
impl-mkcl.lisp
(file).
impl-mezzano.lisp
(file).
impl-genera.lisp
(file).
impl-ecl.lisp
(file).
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
timeout-interrupt.lisp
(file).
api-v2
(module).
atomic-integer
(structure).
atomic-integer-compare-and-swap
(function).
atomic-integer-decf
(function).
atomic-integer-incf
(function).
atomic-integer-value
(function).
(setf atomic-integer-value)
(function).
make-atomic-integer
(function).
print-object
(method).
%atomic-integer-value
(type).
%make-atomic-integer
(function).
atomic-cas
(macro).
atomic-decf
(macro).
atomic-incf
(macro).
atomic-integer-cell
(reader).
(setf atomic-integer-cell)
(writer).
atomic-integer-p
(function).
copy-atomic-integer
(function).
bordeaux-threads/api-v2/atomics-java.lisp
:abcl
atomics.lisp
(file).
impl-scl.lisp
(file).
impl-sbcl.lisp
(file).
impl-mcl.lisp
(file).
impl-lispworks.lisp
(file).
impl-mkcl.lisp
(file).
impl-mezzano.lisp
(file).
impl-genera.lisp
(file).
impl-ecl.lisp
(file).
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
timeout-interrupt.lisp
(file).
api-v2
(module).
bordeaux-threads/api-v2/api-locks.lisp
atomics-java.lisp
(file).
atomics.lisp
(file).
impl-scl.lisp
(file).
impl-sbcl.lisp
(file).
impl-mcl.lisp
(file).
impl-lispworks.lisp
(file).
impl-mkcl.lisp
(file).
impl-mezzano.lisp
(file).
impl-genera.lisp
(file).
impl-ecl.lisp
(file).
impl-corman.lisp
(file).
impl-cmucl.lisp
(file).
impl-clozure.lisp
(file).
impl-clisp.lisp
(file).
impl-clasp.lisp
(file).
impl-allegro.lisp
(file).
impl-abcl.lisp
(file).
timeout-interrupt.lisp
(file).
api-v2
(module).
acquire-lock
(function).
acquire-recursive-lock
(function).
lock
(class).
lock-name
(reader method).
lock-name
(reader method).
lock-native-lock
(reader method).
lock-native-lock
(reader method).
lockp
(function).
make-lock
(function).
make-recursive-lock
(function).
native-lock-p
(function).
native-recursive-lock-p
(function).
print-object
(method).
print-object
(method).
recursive-lock
(class).
recursive-lock-p
(function).
release-lock
(function).
release-recursive-lock
(function).
with-lock-held
(macro).
with-recursive-lock-held
(macro).
bordeaux-threads/api-v2/api-threads.lisp
api-locks.lisp
(file).
api-v2
(module).
*default-special-bindings*
(special variable).
all-threads
(function).
current-thread
(function).
destroy-thread
(method).
error-in-thread
(method).
interrupt-thread
(method).
join-thread
(method).
make-thread
(function).
print-object
(method).
signal-in-thread
(method).
start-multiprocessing
(function).
thread
(class).
thread-alive-p
(method).
thread-name
(reader method).
thread-native-thread
(reader method).
thread-yield
(function).
threadp
(function).
warn-in-thread
(method).
%get-thread-wrapper
(function).
*current-thread*
(special variable).
+standard-io-bindings+
(constant).
compute-special-bindings
(function).
ensure-thread-wrapper
(function).
establish-dynamic-env
(function).
make-unknown-thread-name
(function).
remove-thread-wrapper
(function).
thread-exit-condition
(reader method).
thread-return-values
(reader method).
(setf thread-wrapper)
(function).
bordeaux-threads/api-v2/api-semaphores.lisp
api-threads.lisp
(file).
api-v2
(module).
make-semaphore
(function).
semaphorep
(function).
signal-semaphore
(function).
wait-on-semaphore
(function).
bordeaux-threads/api-v2/impl-condition-variables-semaphores.lisp
:ccl
api-semaphores.lisp
(file).
api-v2
(module).
bordeaux-threads/api-v2/api-condition-variables.lisp
impl-condition-variables-semaphores.lisp
(file).
api-semaphores.lisp
(file).
api-v2
(module).
condition-broadcast
(function).
condition-notify
(function).
condition-variable-p
(function).
condition-wait
(function).
make-condition-variable
(function).
Packages are listed by definition order.
bt2
BORDEAUX-THREADS is a proposed standard for a minimal
MP/threading interface. It is similar to the CLIM-SYS threading and
lock support, but for the following broad differences:
1) Some behaviours are defined in additional detail: attention has
been given to special variable interaction, whether and when
cleanup forms are run. Some behaviours are defined in less
detail: an implementation that does not support multiple
threads is not required to use a new list (nil) for a lock, for
example.
2) Many functions which would be difficult, dangerous or inefficient to provide on some implementations have been removed. Chiefly these are functions such as thread-wait which expect for efficiency that the thread scheduler is written in Lisp and ’hookable’, which can’t sensibly be done if the scheduler is external to the Lisp image, or the system has more than one CPU.
3) Unbalanced ACQUIRE-LOCK and RELEASE-LOCK functions have been
added.
4) Posix-style condition variables have been added, as it’s not
otherwise possible to implement them correctly using the other
operations that are specified.
Threads may be implemented using whatever applicable techniques are
provided by the operating system: user-space scheduling,
kernel-based LWPs or anything else that does the job.
To avoid conflict with existing MP/threading interfaces in implementations, these symbols live in the BORDEAUX-THREADS-2 package. Implementations and/or users may also make them visible or exported in other more traditionally named packages.
bordeaux-threads-2
alexandria
.
common-lisp
.
global-vars
.
*default-special-bindings*
(special variable).
+supports-threads-p+
(constant).
abnormal-exit
(condition).
abnormal-exit-condition
(generic reader).
acquire-lock
(function).
acquire-recursive-lock
(function).
all-threads
(function).
atomic-integer
(structure).
atomic-integer-compare-and-swap
(function).
atomic-integer-decf
(function).
atomic-integer-incf
(function).
atomic-integer-value
(function).
(setf atomic-integer-value)
(function).
bordeaux-threads-error
(condition).
condition-broadcast
(function).
condition-notify
(function).
condition-variable
(type).
condition-variable-p
(function).
condition-wait
(function).
current-thread
(function).
destroy-thread
(generic function).
error-in-thread
(generic function).
interrupt-thread
(generic function).
join-thread
(generic function).
lock
(class).
lock-name
(generic reader).
lock-native-lock
(generic reader).
lockp
(function).
make-atomic-integer
(function).
make-condition-variable
(function).
make-lock
(function).
make-recursive-lock
(function).
make-semaphore
(function).
make-thread
(function).
native-lock
(type).
native-lock-p
(function).
native-recursive-lock
(type).
native-recursive-lock-p
(function).
not-implemented
(condition).
recursive-lock
(class).
recursive-lock-p
(function).
release-lock
(function).
release-recursive-lock
(function).
semaphore
(type).
semaphorep
(function).
signal-in-thread
(generic function).
signal-semaphore
(function).
start-multiprocessing
(function).
thread
(class).
thread-alive-p
(generic function).
thread-name
(generic reader).
thread-native-thread
(generic reader).
thread-yield
(function).
threadp
(function).
wait-on-semaphore
(function).
warn-in-thread
(generic function).
with-lock-held
(macro).
with-recursive-lock-held
(macro).
with-timeout
(macro).
%acquire-lock
(function).
%acquire-recursive-lock
(function).
%all-threads
(function).
%atomic-integer-value
(type).
%condition-broadcast
(function).
%condition-notify
(function).
%condition-wait
(function).
%current-thread
(function).
%destroy-thread
(function).
%get-thread-wrapper
(function).
%interrupt-thread
(function).
%join-thread
(function).
%lock
(function).
%make-atomic-integer
(function).
%make-condition-variable
(function).
%make-lock
(function).
%make-recursive-lock
(function).
%make-semaphore
(function).
%make-thread
(function).
%release-lock
(function).
%release-recursive-lock
(function).
%signal-semaphore
(function).
%thread-alive-p
(function).
%thread-name
(function).
%thread-yield
(function).
%timedlock
(function).
%try-lock
(function).
%wait-on-semaphore
(function).
%with-lock
(macro).
%with-recursive-lock
(macro).
*current-thread*
(special variable).
*not-implemented*
(special variable).
+standard-io-bindings+
(constant).
atomic-cas
(macro).
atomic-decf
(macro).
atomic-incf
(macro).
atomic-integer-cell
(reader).
(setf atomic-integer-cell)
(writer).
atomic-integer-p
(function).
bool
(function).
bordeaux-threads-simple-error
(condition).
bt-error
(function).
compute-special-bindings
(function).
copy-atomic-integer
(function).
ensure-thread-wrapper
(function).
establish-dynamic-env
(function).
implemented-p
(function).
implemented-p*
(function).
keyarg-not-implemented
(condition).
keyarg-not-implemented-keyarg
(generic reader).
keyarg-not-implemented-operation
(generic reader).
make-unknown-thread-name
(function).
mark-not-implemented
(function).
native-thread
(type).
operation-not-implemented
(condition).
operation-not-implemented-operation
(generic reader).
remove-thread-wrapper
(function).
signal-not-implemented
(function).
thread-exit-condition
(generic reader).
thread-return-values
(generic reader).
(setf thread-wrapper)
(function).
bordeaux-threads
BORDEAUX-THREADS is a proposed standard for a minimal
MP/threading interface. It is similar to the CLIM-SYS threading and
lock support, but for the following broad differences:
1) Some behaviours are defined in additional detail: attention has
been given to special variable interaction, whether and when
cleanup forms are run. Some behaviours are defined in less
detail: an implementation that does not support multiple
threads is not required to use a new list (nil) for a lock, for
example.
2) Many functions which would be difficult, dangerous or inefficient to provide on some implementations have been removed. Chiefly these are functions such as thread-wait which expect for efficiency that the thread scheduler is written in Lisp and ’hookable’, which can’t sensibly be done if the scheduler is external to the Lisp image, or the system has more than one CPU.
3) Unbalanced ACQUIRE-LOCK and RELEASE-LOCK functions have been
added.
4) Posix-style condition variables have been added, as it’s not
otherwise possible to implement them correctly using the other
operations that are specified.
Threads may be implemented using whatever applicable techniques are
provided by the operating system: user-space scheduling,
kernel-based LWPs or anything else that does the job.
Some parts of this specification can also be implemented in a Lisp
that does not support multiple threads. Thread creation and some
thread inspection operations will not work, but the locking
functions are still present (though they may do nothing) so that
thread-safe code can be compiled on both multithread and
single-thread implementations without need of conditionals.
To avoid conflict with existing MP/threading interfaces in implementations, these symbols live in the BORDEAUX-THREADS package. Implementations and/or users may also make them visible or exported in other more traditionally named packages.
bt
alexandria
.
common-lisp
.
*default-special-bindings*
(special variable).
*standard-io-bindings*
(special variable).
*supports-threads-p*
(special variable).
acquire-lock
(function).
acquire-recursive-lock
(function).
all-threads
(function).
condition-notify
(function).
condition-wait
(function).
current-thread
(function).
destroy-thread
(function).
interrupt-thread
(function).
join-thread
(function).
lock
(type).
lock-p
(function).
make-condition-variable
(function).
make-lock
(function).
make-recursive-lock
(function).
make-semaphore
(function).
make-thread
(function).
recursive-lock
(type).
recursive-lock-p
(function).
release-lock
(function).
release-recursive-lock
(function).
semaphore
(type).
semaphore-p
(function).
signal-semaphore
(function).
start-multiprocessing
(function).
thread
(type).
thread-alive-p
(function).
thread-name
(function).
thread-yield
(function).
threadp
(function).
timeout
(type).
wait-on-semaphore
(function).
with-lock-held
(macro).
with-recursive-lock-held
(macro).
with-timeout
(macro).
%make-thread
(function).
%semaphore
(structure).
%semaphore-condition-variable
(reader).
(setf %semaphore-condition-variable)
(writer).
%semaphore-counter
(reader).
(setf %semaphore-counter)
(writer).
%semaphore-lock
(reader).
(setf %semaphore-lock)
(writer).
%semaphore-p
(function).
*no-condition-wait-timeout-message*
(special variable).
binding-default-specials
(function).
bordeaux-mp-condition
(condition).
copy-%semaphore
(function).
defbindings
(macro).
defdfun
(macro).
defdmacro
(macro).
define-condition-wait-compiler-macro
(macro).
make-%semaphore
(function).
make-threading-support-error
(generic function).
mark-supported
(function).
message
(generic reader).
signal-error-if-condition-wait-timeout
(function).
signal-error-if-current-thread
(function).
Definitions are sorted by export status, category, package, and then by lexicographic order.
This should be set to T if the running instance has thread support.
bt2
.
This variable holds an alist associating special variable symbols
to forms to evaluate. Special variables named in this list will
be locally bound in the new thread before it begins executing user code.
This variable may be rebound around calls to MAKE-THREAD to add/alter default bindings. The effect of mutating this list is undefined, but earlier forms take precedence over later forms for the same symbol, so defaults may be overridden by consing to the head of the list.
bt2
.
This variable holds an alist associating special variable symbols
to forms to evaluate. Special variables named in this list will
be locally bound in the new thread before it begins executing user code.
This variable may be rebound around calls to MAKE-THREAD to add/alter default bindings. The effect of mutating this list is undefined, but earlier forms take precedence over later forms for the same symbol, so defaults may be overridden by consing to the head of the list.
Standard bindings of printer/reader control variables as per CL:WITH-STANDARD-IO-SYNTAX.
This should be set to T if the running instance has thread support.
Evaluates BODY with the lock named by PLACE, the value of which
is a lock created by MAKE-LOCK. Before the forms in BODY are
evaluated, the lock is acquired as if by using ACQUIRE-LOCK. After the
forms in BODY have been evaluated, or if a non-local control transfer
is caused (e.g. by THROW or SIGNAL), the lock is released as if by
RELEASE-LOCK.
Note that if the debugger is entered, it is unspecified whether the lock is released at debugger entry or at debugger exit when execution is restarted.
bt2
.
Evaluates BODY with the lock named by PLACE, the value of which
is a lock created by MAKE-LOCK. Before the forms in BODY are
evaluated, the lock is acquired as if by using ACQUIRE-LOCK. After the
forms in BODY have been evaluated, or if a non-local control transfer
is caused (e.g. by THROW or SIGNAL), the lock is released as if by
RELEASE-LOCK.
Note that if the debugger is entered, it is unspecified whether the lock is released at debugger entry or at debugger exit when execution is restarted.
Evaluates BODY with the recursive lock named by PLACE, which is a reference to a recursive lock created by MAKE-RECURSIVE-LOCK. See WITH-LOCK-HELD.
bt2
.
Evaluates BODY with the recursive lock named by PLACE, which is a reference to a recursive lock created by MAKE-RECURSIVE-LOCK. See WITH-LOCK-HELD etc etc
Acquire the lock LOCK for the calling thread.
WAIT governs what happens if the lock is not available: if WAIT
is true, the calling thread will wait until the lock is available
and then acquire it; if WAIT is NIL, ACQUIRE-LOCK will return
immediately.
If WAIT is true, TIMEOUT may specify a maximum amount of seconds to
wait for the lock to become available.
ACQUIRE-LOCK returns T if the lock was acquired and NIL
otherwise.
This specification does not define what happens if a thread attempts to acquire a lock that it already holds. For applications that require locks to be safe when acquired recursively, see instead MAKE-RECURSIVE-LOCK and friends.
bt2
.
Acquire the lock LOCK for the calling thread.
WAIT-P governs what happens if the lock is not available: if WAIT-P
is true, the calling thread will wait until the lock is available
and then acquire it; if WAIT-P is NIL, ACQUIRE-LOCK will return
immediately. ACQUIRE-LOCK returns true if the lock was acquired and
NIL otherwise.
This specification does not define what happens if a thread attempts to acquire a lock that it already holds. For applications that require locks to be safe when acquired recursively, see instead MAKE-RECURSIVE-LOCK and friends.
Acquire the lock LOCK for the calling thread.
WAIT governs what happens if the lock is not available: if WAIT is
true, the calling thread will wait until the lock is available and
then acquire it; if WAIT is NIL, ACQUIRE-RECURSIVE-LOCK will return
immediately.
If WAIT is true, TIMEOUT may specify a maximum amount of seconds to
wait for the lock to become available.
ACQUIRE-LOCK returns true if the lock was acquired and NIL
otherwise.
This operation will return immediately if the lock is already owned by the current thread. Acquire and release operations must be balanced.
bt2
.
As for ACQUIRE-LOCK, but for recursive locks.
Returns a sequence of all of the threads. This may not be freshly-allocated, so the caller should not modify it.
If the current value of ‘ATOMIC-INTEGER‘ is equal to ‘OLD‘, replace
it with ‘NEW‘.
Returns T if the replacement was successful, otherwise NIL.
bt2
.
Decrements the value of ‘ATOMIC-INTEGER‘ by ‘DELTA‘.
Returns the new value of ‘ATOMIC-INTEGER‘.
bt2
.
Increments the value of ‘ATOMIC-INTEGER‘ by ‘DELTA‘.
Returns the new value of ‘ATOMIC-INTEGER‘.
bt2
.
Returns the current value of ‘ATOMIC-INTEGER‘.
bt2
.
Notify all threads waiting for CONDITION-VARIABLE.
The order of wakeup is unspecified and does not necessarily relate
to the order that the threads went to sleep in.
CONDITION-BROADCAST returns always NIL.
bt2
.
Notify one of the threads waiting for
CONDITION-VARIABLE.
It is unspecified which thread gets a wakeup and does not necessarily relate to the order that the threads went to sleep in.
CONDITION-NOTIFY returns always NIL.
bt2
.
Notify at least one of the threads waiting for
CONDITION-VARIABLE. It is implementation-dependent whether one or
more than one (and possibly all) threads are woken, but if the
implementation is capable of waking only a single thread (not all
are) this is probably preferable for efficiency reasons. The order
of wakeup is unspecified and does not necessarily relate to the
order that the threads went to sleep in.
CONDITION-NOTIFY has no useful return value. In an implementation that does not support multiple threads, it has no effect.
Returns TRUE if OBJECT is a condition variable, and NIL otherwise.
bt2
.
Atomically release LOCK and enqueue the calling
thread waiting for CONDITION-VARIABLE. The thread will resume when
another thread has notified it using CONDITION-NOTIFY; it may also
resume if interrupted by some external event or in other
implementation-dependent circumstances: the caller must always test
on waking that there is threading to be done, instead of assuming
that it can go ahead.
It is an error to call this function unless from the thread that
holds LOCK.
If TIMEOUT is nil or not provided, the call blocks until a
notification is received.
If TIMEOUT is non-nil, the call will return after at most TIMEOUT seconds (approximately), whether or not a notification has occurred.
Either NIL or T will be returned. A return of NIL indicates that the timeout has expired without receiving a notification. A return of T indicates that a notification was received.
bt2
.
Atomically release LOCK and enqueue the calling
thread waiting for CONDITION-VARIABLE. The thread will resume when
another thread has notified it using CONDITION-NOTIFY; it may also
resume if interrupted by some external event or in other
implementation-dependent circumstances: the caller must always test
on waking that there is threading to be done, instead of assuming
that it can go ahead.
It is an error to call function this unless from the thread that
holds LOCK.
If TIMEOUT is nil or not provided, the call blocks until a
notification is received.
If TIMEOUT is non-nil, the call will return after at most TIMEOUT seconds (approximately), whether or not a notification has occurred.
Either NIL or T will be returned. A return of NIL indicates that the
timeout has expired without receiving a notification. A return of T
indicates that a notification was received.
In an implementation that does not support multiple threads, this function signals an error.
Returns the thread object for the calling thread. This is the same kind of object as would be returned by MAKE-THREAD.
bt2
.
Returns the thread object for the calling
thread. This is the same kind of object as would be returned by
MAKE-THREAD.
Terminates the thread THREAD, which is an object
as returned by MAKE-THREAD. This should be used with caution: it is
implementation-defined whether the thread runs cleanup forms or
releases its locks first.
Destroying the calling thread is an error.
Interrupt THREAD and cause it to evaluate FUNCTION
before continuing with the interrupted path of execution. This may
not be a good idea if THREAD is holding locks or doing anything
important. On systems that do not support multiple threads, this
function signals an error.
Wait until THREAD terminates. If THREAD has already terminated, return immediately. The return values of the thread function are returned.
Returns T if OBJECT is a lock; returns NIL otherwise.
Returns T if OBJECT is a non-recursive lock; returns NIL otherwise.
bt2
.
Create an ‘ATOMIC-INTEGER‘ with initial value ‘VALUE‘
bt2
.
Returns a new condition-variable object for use with CONDITION-WAIT and CONDITION-NOTIFY.
bt2
.
Returns a new condition-variable object for use with CONDITION-WAIT and CONDITION-NOTIFY.
Creates a lock (a mutex) whose name is NAME. If the system does not support multiple threads this will still return some object, but it may not be used for very much.
Create and return a recursive lock whose name is NAME.
A recursive lock differs from an ordinary lock in that a thread that already holds the recursive lock can acquire it again without blocking. The thread must then release the lock twice before it becomes available for another thread (acquire and release operations must be balanced).
bt2
.
Create and return a recursive lock whose name is NAME. A recursive lock differs from an ordinary lock in that a thread that already holds the recursive lock can acquire it again without blocking. The thread must then release the lock twice before it becomes available for another thread.
Create a semaphore with the supplied NAME and initial counter value COUNT.
bt2
.
Create a semaphore with the supplied NAME and initial counter value COUNT.
Creates and returns a thread named NAME, which will call the
function FUNCTION with no arguments: when FUNCTION returns, the
thread terminates.
The interaction between threads and dynamic variables is in some
cases complex, and depends on whether the variable has only a global
binding (as established by e.g. DEFVAR/DEFPARAMETER/top-level SETQ)
or has been bound locally (e.g. with LET or LET*) in the calling
thread.
- Global bindings are shared between threads: the initial value of a global variable in the new thread will be the same as in the parent, and an assignment to such a variable in any thread will be visible to all threads in which the global binding is visible.
- Local bindings, such as the ones introduced by INITIAL-BINDINGS,
are local to the thread they are introduced in, except that
- Local bindings in the the caller of MAKE-THREAD may or may not be shared with the new thread that it creates: this is implementation-defined. Portable code should not depend on particular behaviour in this case, nor should it assign to such variables without first rebinding them in the new thread.
bt2
.
Creates and returns a thread named NAME, which will call the function FUNCTION with no arguments: when FUNCTION returns, the thread terminates. NAME defaults to "Anonymous thread" if unsupplied.
On systems that do not support multi-threading, MAKE-THREAD will
signal an error.
The interaction between threads and dynamic variables is in some
cases complex, and depends on whether the variable has only a global
binding (as established by e.g. DEFVAR/DEFPARAMETER/top-level SETQ)
or has been bound locally (e.g. with LET or LET*) in the calling
thread.
- Global bindings are shared between threads: the initial value of a
global variable in the new thread will be the same as in the
parent, and an assignment to such a variable in any thread will be
visible to all threads in which the global binding is visible.
- Local bindings, such as the ones introduced by INITIAL-BINDINGS,
are local to the thread they are introduced in, except that
- Local bindings in the the caller of MAKE-THREAD may or may not be shared with the new thread that it creates: this is implementation-defined. Portable code should not depend on particular behaviour in this case, nor should it assign to such variables without first rebinding them in the new thread.
Returns T if OBJECT is a recursive lock; returns NIL otherwise.
bt2
.
Returns T if OBJECT is a recursive lock; returns NIL otherwise.
Release LOCK. It is an error to call this unless
the lock has previously been acquired (and not released) by the same
thread. If other threads are waiting for the lock, the
ACQUIRE-LOCK call in one of them will now be able to continue.
Returns the lock.
bt2
.
Release LOCK. It is an error to call this unless
the lock has previously been acquired (and not released) by the same
thread. If other threads are waiting for the lock, the
ACQUIRE-LOCK call in one of them will now be able to continue.
This function has no interesting return value.
Release LOCK. It is an error to call this unless
the lock has previously been acquired (and not released) by the same
thread.
Returns the lock.
bt2
.
Release the recursive LOCK. The lock will only
become free after as many Release operations as there have been
Acquire operations. See RELEASE-LOCK for other information.
Returns T if OBJECT is a semaphore; returns NIL otherwise.
Returns T if OBJECT is a semaphore, otherwise NIL.
bt2
.
Increment SEMAPHORE by COUNT. If there are threads waiting on this semaphore, then COUNT of them are woken up.
bt2
.
Increment SEMAPHORE by COUNT. If there are threads waiting on this semaphore, then COUNT of them are woken up.
If the host implementation uses user-level threads, start the
scheduler and multiprocessing, otherwise do nothing.
It is safe to call repeatedly.
bt2
.
If the host implementation uses user-level threads, start the
scheduler and multiprocessing, otherwise do nothing.
It is safe to call repeatedly.
Returns true if THREAD is alive, that is, if DESTROY-THREAD has not been called on it.
Returns the name of the thread, as supplied to MAKE-THREAD.
Allows other threads to run. It may be necessary or desirable to call this periodically in some implementations; others may schedule threads automatically.
bt2
.
Allows other threads to run. It may be necessary or desirable to call this periodically in some implementations; others may schedule threads automatically. On systems that do not support multi-threading, this does nothing.
Returns true if object is a thread, otherwise NIL.
Decrement the count of SEMAPHORE by 1 if the count is larger than zero.
If count is zero, blocks until the semaphore can be decremented.
Returns generalized boolean T on success.
If TIMEOUT is given, it is the maximum number of seconds to wait. If the count cannot be decremented in that time, returns NIL without decrementing the count.
bt2
.
Decrement the count of SEMAPHORE by 1 if the count would not be negative.
Else blocks until the semaphore can be decremented. Returns generalized boolean
T on success.
If TIMEOUT is given, it is the maximum number of seconds to wait. If the count cannot be decremented in that time, returns NIL without decrementing the count.
bt2
.
abnormal-exit
)) ¶bt2
.
bt2
.
recursive-lock
)) ¶automatically generated reader method
recursive-lock
) stream) ¶atomic-integer
) stream) ¶bt2
.
error
.
Wrapper for an UNSIGNED-BYTE that allows atomic
increment, decrement and swap.
The counter is a machine word: 32/64 bits depending on CPU.
Wrapper for a native non-recursive lock.
Wrapper for a native recursive lock.
bt2
.
:name
This slot is read-only.
:native-thread
This slot is read-only.
(bt2:make-lock)
This slot is read-only.
This slot is read-only.
Standard bindings of printer/reader control variables as per CL:WITH-STANDARD-IO-SYNTAX. Forms are evaluated in the calling thread.
bt2
.
The actual implementation-dependent function that creates threads.
lock
.
Return a closure that binds the symbols in SPECIAL-BINDINGS and calls FUNCTION.
Return a closure that binds the symbols in SPECIAL-BINDINGS and calls FUNCTION.
bt2
.
bt2
.
keyarg-not-implemented
)) ¶bt2
.
keyarg-not-implemented
)) ¶Creates a BORDEAUX-THREADS condition which specifies
whether there is no BORDEAUX-THREADS support for the implementation, no
threads enabled for the system, or no support for a particular
function.
bordeaux-mp-condition
)) ¶bt2
.
operation-not-implemented
)) ¶error
.
bt2
.
bordeaux-threads-error
.
simple-error
.
Jump to: | %
(
A B C D E F G I J K L M N O P R S T W |
---|
Jump to: | %
(
A B C D E F G I J K L M N O P R S T W |
---|
Jump to: | %
*
+
C E K L M N O S |
---|
Jump to: | %
*
+
C E K L M N O S |
---|
Jump to: | %
A B C D F I K L M N O P R S T V |
---|
Jump to: | %
A B C D F I K L M N O P R S T V |
---|