The bordeaux-threads Reference Manual

This is the bordeaux-threads Reference Manual, version 0.9.3, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Feb 26 14:46:23 2024 GMT+0.

Table of Contents


1 Introduction


2 Systems

The main system appears first, followed by any subsystem dependency.


2.1 bordeaux-threads

Bordeaux Threads makes writing portable multi-threaded apps simple.

Author

Stelian Ionescu <>

License

MIT

Version

0.9.3

Dependencies
  • alexandria (system).
  • global-vars (system).
  • trivial-features (system).
  • trivial-garbage (system).
Source

bordeaux-threads.asd.

Child Components

3 Modules

Modules are listed depth-first from the system components tree.


3.1 bordeaux-threads/api-v1

Source

bordeaux-threads.asd.

Parent Component

bordeaux-threads (system).

Child Components

3.2 bordeaux-threads/api-v2

Dependency

api-v1 (module).

Source

bordeaux-threads.asd.

Parent Component

bordeaux-threads (system).

Child Components

4 Files

Files are sorted by type and then listed depth-first from the systems components trees.


4.1 Lisp


4.1.1 bordeaux-threads/bordeaux-threads.asd

Source

bordeaux-threads.asd.

Parent Component

bordeaux-threads (system).

ASDF Systems

bordeaux-threads.


4.1.2 bordeaux-threads/api-v1/pkgdcl.lisp

Source

bordeaux-threads.asd.

Parent Component

api-v1 (module).

Packages

bordeaux-threads.


4.1.3 bordeaux-threads/api-v1/bordeaux-threads.lisp

Dependency

pkgdcl.lisp (file).

Source

bordeaux-threads.asd.

Parent Component

api-v1 (module).

Public Interface
Internals

4.1.4 bordeaux-threads/api-v1/impl-abcl.lisp

If Feature

:armedbear

Dependency

bordeaux-threads.lisp (file).

Source

bordeaux-threads.asd.

Parent Component

api-v1 (module).


4.1.5 bordeaux-threads/api-v1/impl-allegro.lisp

If Feature

:allegro

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v1 (module).


4.1.6 bordeaux-threads/api-v1/impl-clasp.lisp

If Feature

:clasp

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v1 (module).


4.1.7 bordeaux-threads/api-v1/impl-clisp.lisp

If Feature

:clisp

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v1 (module).


4.1.8 bordeaux-threads/api-v1/impl-clozure.lisp

If Feature

:openmcl

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v1 (module).


4.1.9 bordeaux-threads/api-v1/impl-cmucl.lisp

If Feature

:cmu

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v1 (module).


4.1.10 bordeaux-threads/api-v1/impl-corman.lisp

If Feature

:corman

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v1 (module).


4.1.11 bordeaux-threads/api-v1/impl-ecl.lisp

If Feature

:ecl

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v1 (module).


4.1.12 bordeaux-threads/api-v1/impl-genera.lisp

If Feature

:genera

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v1 (module).


4.1.13 bordeaux-threads/api-v1/impl-mezzano.lisp

If Feature

:mezzano

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v1 (module).


4.1.14 bordeaux-threads/api-v1/impl-mkcl.lisp

If Feature

:mkcl

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v1 (module).


4.1.15 bordeaux-threads/api-v1/impl-lispworks.lisp

If Feature

:lispworks

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v1 (module).


4.1.16 bordeaux-threads/api-v1/impl-mcl.lisp

If Feature

:digitool

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v1 (module).


4.1.17 bordeaux-threads/api-v1/impl-sbcl.lisp

If Feature

:sbcl

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v1 (module).

Public Interface
Internals

%make-thread (function).


4.1.18 bordeaux-threads/api-v1/impl-scl.lisp

If Feature

:scl

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v1 (module).


4.1.19 bordeaux-threads/api-v1/impl-lispworks-condition-variables.lisp

If Feature

(:and :lispworks (:or :lispworks4 :lispworks5))

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v1 (module).


4.1.20 bordeaux-threads/api-v1/condition-variables.lisp

If Feature

:digitool

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v1 (module).


4.1.21 bordeaux-threads/api-v1/default-implementations.lisp

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v1 (module).

Public Interface
Internals

4.1.22 bordeaux-threads/api-v2/pkgdcl.lisp

Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).

Packages

bordeaux-threads-2.


4.1.23 bordeaux-threads/api-v2/bordeaux-threads.lisp

Dependency

pkgdcl.lisp (file).

Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).

Public Interface
Internals

4.1.24 bordeaux-threads/api-v2/timeout-interrupt.lisp

Dependency

bordeaux-threads.lisp (file).

Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).


4.1.25 bordeaux-threads/api-v2/impl-abcl.lisp

If Feature

:abcl

Dependency

timeout-interrupt.lisp (file).

Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).


4.1.26 bordeaux-threads/api-v2/impl-allegro.lisp

If Feature

:allegro

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).


4.1.27 bordeaux-threads/api-v2/impl-clasp.lisp

If Feature

:clasp

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).


4.1.28 bordeaux-threads/api-v2/impl-clisp.lisp

If Feature

:clisp

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).


4.1.29 bordeaux-threads/api-v2/impl-clozure.lisp

If Feature

:clozure

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).


4.1.30 bordeaux-threads/api-v2/impl-cmucl.lisp

If Feature

:cmu

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).


4.1.31 bordeaux-threads/api-v2/impl-corman.lisp

If Feature

:corman

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).


4.1.32 bordeaux-threads/api-v2/impl-ecl.lisp

If Feature

:ecl

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).


4.1.33 bordeaux-threads/api-v2/impl-genera.lisp

If Feature

:genera

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).


4.1.34 bordeaux-threads/api-v2/impl-mezzano.lisp

If Feature

:mezzano

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).


4.1.35 bordeaux-threads/api-v2/impl-mkcl.lisp

If Feature

:mkcl

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).


4.1.36 bordeaux-threads/api-v2/impl-lispworks.lisp

If Feature

:lispworks

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).


4.1.37 bordeaux-threads/api-v2/impl-mcl.lisp

If Feature

:digitool

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).


4.1.38 bordeaux-threads/api-v2/impl-sbcl.lisp

If Feature

:sbcl

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).

Public Interface
Internals

4.1.39 bordeaux-threads/api-v2/impl-scl.lisp

If Feature

:scl

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).


4.1.40 bordeaux-threads/api-v2/atomics.lisp

If Feature

(:not :abcl)

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).

Public Interface
Internals

4.1.41 bordeaux-threads/api-v2/atomics-java.lisp

If Feature

:abcl

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).


4.1.42 bordeaux-threads/api-v2/api-locks.lisp

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).

Public Interface

4.1.43 bordeaux-threads/api-v2/api-threads.lisp

Dependency

api-locks.lisp (file).

Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).

Public Interface
Internals

4.1.44 bordeaux-threads/api-v2/api-semaphores.lisp

Dependency

api-threads.lisp (file).

Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).

Public Interface

4.1.45 bordeaux-threads/api-v2/impl-condition-variables-semaphores.lisp

If Feature

:ccl

Dependency

api-semaphores.lisp (file).

Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).


4.1.46 bordeaux-threads/api-v2/api-condition-variables.lisp

Dependencies
Source

bordeaux-threads.asd.

Parent Component

api-v2 (module).

Public Interface

4.2 Static


4.2.1 bordeaux-threads/version.sexp

Source

bordeaux-threads.asd.

Parent Component

bordeaux-threads (system).


5 Packages

Packages are listed by definition order.


5.1 bordeaux-threads-2

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.

Source

pkgdcl.lisp.

Nickname

bt2

Use List
  • alexandria.
  • common-lisp.
  • global-vars.
Public Interface
Internals

5.2 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.

Source

pkgdcl.lisp.

Nickname

bt

Use List
  • alexandria.
  • common-lisp.
Public Interface
Internals

6 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


6.1 Public Interface


6.1.1 Special variables

Special Variable: *default-special-bindings*

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.

Package

bordeaux-threads-2.

Source

api-threads.lisp.

Special Variable: *default-special-bindings*

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.

Package

bordeaux-threads.

Source

bordeaux-threads.lisp.

Special Variable: *standard-io-bindings*

Standard bindings of printer/reader control variables as per CL:WITH-STANDARD-IO-SYNTAX.

Package

bordeaux-threads.

Source

bordeaux-threads.lisp.

Special Variable: *supports-threads-p*

This should be set to T if the running instance has thread support.

Package

bordeaux-threads.

Source

bordeaux-threads.lisp.


6.1.2 Macros

Macro: with-lock-held ((place &key timeout) &body body)

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.

Package

bordeaux-threads-2.

Source

api-locks.lisp.

Macro: with-lock-held ((place) &body body)

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.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Macro: with-recursive-lock-held ((place &key timeout) &body body)

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.

Package

bordeaux-threads-2.

Source

api-locks.lisp.

Macro: with-recursive-lock-held ((place) &body body)

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

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Macro: with-timeout ((timeout) &body body)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Macro: with-timeout ((timeout) &body body)
Package

bordeaux-threads.

Source

impl-sbcl.lisp.


6.1.3 Ordinary functions

Function: acquire-lock (lock &key wait timeout)

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.

Package

bordeaux-threads-2.

Source

api-locks.lisp.

Function: acquire-lock (lock &optional wait-p)

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.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: acquire-recursive-lock (lock &key wait timeout)

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.

Package

bordeaux-threads-2.

Source

api-locks.lisp.

Function: acquire-recursive-lock (lock)

As for ACQUIRE-LOCK, but for recursive locks.

Package

bordeaux-threads.

Source

default-implementations.lisp.

Function: all-threads ()

Returns a sequence of all of the threads.

Package

bordeaux-threads-2.

Source

api-threads.lisp.

Function: all-threads ()

Returns a sequence of all of the threads. This may not be freshly-allocated, so the caller should not modify it.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: atomic-integer-compare-and-swap (atomic-integer old new)

If the current value of ‘ATOMIC-INTEGER‘ is equal to ‘OLD‘, replace it with ‘NEW‘.

Returns T if the replacement was successful, otherwise NIL.

Package

bordeaux-threads-2.

Source

atomics.lisp.

Function: atomic-integer-decf (atomic-integer &optional delta)

Decrements the value of ‘ATOMIC-INTEGER‘ by ‘DELTA‘.

Returns the new value of ‘ATOMIC-INTEGER‘.

Package

bordeaux-threads-2.

Source

atomics.lisp.

Function: atomic-integer-incf (atomic-integer &optional delta)

Increments the value of ‘ATOMIC-INTEGER‘ by ‘DELTA‘.

Returns the new value of ‘ATOMIC-INTEGER‘.

Package

bordeaux-threads-2.

Source

atomics.lisp.

Function: atomic-integer-value (atomic-integer)

Returns the current value of ‘ATOMIC-INTEGER‘.

Package

bordeaux-threads-2.

Source

atomics.lisp.

Function: (setf atomic-integer-value) (atomic-integer)
Package

bordeaux-threads-2.

Source

atomics.lisp.

Function: condition-broadcast (condition-variable)

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.

Package

bordeaux-threads-2.

Source

api-condition-variables.lisp.

Function: condition-notify (condition-variable)

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.

Package

bordeaux-threads-2.

Source

api-condition-variables.lisp.

Function: condition-notify (condition-variable)

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.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: condition-variable-p (object)

Returns TRUE if OBJECT is a condition variable, and NIL otherwise.

Package

bordeaux-threads-2.

Source

api-condition-variables.lisp.

Function: condition-wait (condition-variable lock &key timeout)

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.

Package

bordeaux-threads-2.

Source

api-condition-variables.lisp.

Function: condition-wait (condition-variable lock &key timeout)

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.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: current-thread ()

Returns the thread object for the calling thread. This is the same kind of object as would be returned by MAKE-THREAD.

Package

bordeaux-threads-2.

Source

api-threads.lisp.

Function: current-thread ()

Returns the thread object for the calling
thread. This is the same kind of object as would be returned by MAKE-THREAD.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: destroy-thread (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.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: interrupt-thread (thread function &rest args)

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.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: join-thread (thread)

Wait until THREAD terminates. If THREAD has already terminated, return immediately. The return values of the thread function are returned.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: lock-p (object)

Returns T if OBJECT is a lock; returns NIL otherwise.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: lockp (object)

Returns T if OBJECT is a non-recursive lock; returns NIL otherwise.

Package

bordeaux-threads-2.

Source

api-locks.lisp.

Function: make-atomic-integer (&key value)

Create an ‘ATOMIC-INTEGER‘ with initial value ‘VALUE‘

Package

bordeaux-threads-2.

Source

atomics.lisp.

Function: make-condition-variable (&key name)

Returns a new condition-variable object for use with CONDITION-WAIT and CONDITION-NOTIFY.

Package

bordeaux-threads-2.

Source

api-condition-variables.lisp.

Function: make-condition-variable (&key name)

Returns a new condition-variable object for use with CONDITION-WAIT and CONDITION-NOTIFY.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: make-lock (&key name)

Creates a lock (a mutex) whose name is NAME.

Package

bordeaux-threads-2.

Source

api-locks.lisp.

Function: make-lock (&optional name)

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.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: make-recursive-lock (&key name)

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).

Package

bordeaux-threads-2.

Source

api-locks.lisp.

Function: make-recursive-lock (&optional name)

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.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: make-semaphore (&key name count)

Create a semaphore with the supplied NAME and initial counter value COUNT.

Package

bordeaux-threads-2.

Source

api-semaphores.lisp.

Function: make-semaphore (&key name count)

Create a semaphore with the supplied NAME and initial counter value COUNT.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: make-thread (function &key name initial-bindings trap-conditions)

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.

Package

bordeaux-threads-2.

Source

api-threads.lisp.

Function: make-thread (function &key name initial-bindings)

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.

Package

bordeaux-threads.

Source

default-implementations.lisp.

Function: native-lock-p (object)
Package

bordeaux-threads-2.

Source

api-locks.lisp.

Function: native-recursive-lock-p (object)
Package

bordeaux-threads-2.

Source

api-locks.lisp.

Function: recursive-lock-p (object)

Returns T if OBJECT is a recursive lock; returns NIL otherwise.

Package

bordeaux-threads-2.

Source

api-locks.lisp.

Function: recursive-lock-p (object)

Returns T if OBJECT is a recursive lock; returns NIL otherwise.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: release-lock (lock)

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.

Package

bordeaux-threads-2.

Source

api-locks.lisp.

Function: release-lock (lock)

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.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: release-recursive-lock (lock)

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.

Package

bordeaux-threads-2.

Source

api-locks.lisp.

Function: release-recursive-lock (lock)

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.

Package

bordeaux-threads.

Source

default-implementations.lisp.

Function: semaphore-p (object)

Returns T if OBJECT is a semaphore; returns NIL otherwise.

Package

bordeaux-threads.

Source

default-implementations.lisp.

Function: semaphorep (object)

Returns T if OBJECT is a semaphore, otherwise NIL.

Package

bordeaux-threads-2.

Source

api-semaphores.lisp.

Function: signal-semaphore (semaphore &key count)

Increment SEMAPHORE by COUNT. If there are threads waiting on this semaphore, then COUNT of them are woken up.

Package

bordeaux-threads-2.

Source

api-semaphores.lisp.

Function: signal-semaphore (semaphore &key count)

Increment SEMAPHORE by COUNT. If there are threads waiting on this semaphore, then COUNT of them are woken up.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: start-multiprocessing ()

If the host implementation uses user-level threads, start the scheduler and multiprocessing, otherwise do nothing.
It is safe to call repeatedly.

Package

bordeaux-threads-2.

Source

api-threads.lisp.

Function: start-multiprocessing ()

If the host implementation uses user-level threads, start the scheduler and multiprocessing, otherwise do nothing.
It is safe to call repeatedly.

Package

bordeaux-threads.

Source

default-implementations.lisp.

Function: thread-alive-p (thread)

Returns true if THREAD is alive, that is, if DESTROY-THREAD has not been called on it.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: thread-name (thread)

Returns the name of the thread, as supplied to MAKE-THREAD.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: thread-yield ()

Allows other threads to run. It may be necessary or desirable to call this periodically in some implementations; others may schedule threads automatically.

Package

bordeaux-threads-2.

Source

api-threads.lisp.

Function: thread-yield ()

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.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: threadp (object)

Returns T if object is a thread, otherwise NIL.

Package

bordeaux-threads-2.

Source

api-threads.lisp.

Function: threadp (object)

Returns true if object is a thread, otherwise NIL.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: wait-on-semaphore (semaphore &key timeout)

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.

Package

bordeaux-threads-2.

Source

api-semaphores.lisp.

Function: wait-on-semaphore (semaphore &key timeout)

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.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.


6.1.4 Generic functions

Generic Reader: abnormal-exit-condition (condition)
Package

bordeaux-threads-2.

Methods
Reader Method: abnormal-exit-condition ((condition abnormal-exit))
Source

bordeaux-threads.lisp.

Target Slot

exit-condition.

Generic Function: destroy-thread (thread)
Package

bordeaux-threads-2.

Methods
Method: destroy-thread ((thread 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.

Source

api-threads.lisp.

Generic Function: error-in-thread (thread datum &rest args)
Package

bordeaux-threads-2.

Methods
Method: error-in-thread ((thread thread) datum &rest args)

Interrupt THREAD and call ERROR passing DATUM and ARGS.

Source

api-threads.lisp.

Generic Function: interrupt-thread (thread function &rest args)
Package

bordeaux-threads-2.

Methods
Method: interrupt-thread ((thread thread) function &rest args)

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.

Source

api-threads.lisp.

Generic Function: join-thread (thread)
Package

bordeaux-threads-2.

Methods
Method: join-thread ((thread thread))

Wait until THREAD terminates. If THREAD has already terminated, return immediately. The return values of the thread function are returned.

Source

api-threads.lisp.

Generic Reader: lock-name (object)
Package

bordeaux-threads-2.

Methods
Reader Method: lock-name ((recursive-lock recursive-lock))

automatically generated reader method

Source

api-locks.lisp.

Target Slot

name.

Reader Method: lock-name ((lock lock))

automatically generated reader method

Source

api-locks.lisp.

Target Slot

name.

Generic Reader: lock-native-lock (object)
Package

bordeaux-threads-2.

Methods
Reader Method: lock-native-lock ((recursive-lock recursive-lock))

automatically generated reader method

Source

api-locks.lisp.

Target Slot

native-lock.

Reader Method: lock-native-lock ((lock lock))

automatically generated reader method

Source

api-locks.lisp.

Target Slot

native-lock.

Generic Function: signal-in-thread (thread datum &rest args)
Package

bordeaux-threads-2.

Methods
Method: signal-in-thread ((thread thread) datum &rest args)

Interrupt THREAD and call SIGNAL passing DATUM and ARGS.

Source

api-threads.lisp.

Generic Function: thread-alive-p (thread)
Package

bordeaux-threads-2.

Methods
Method: thread-alive-p ((thread thread))

Returns true if THREAD is alive, that is, if it has not finished or DESTROY-THREAD has not been called on it.

Source

api-threads.lisp.

Generic Reader: thread-name (object)
Package

bordeaux-threads-2.

Methods
Reader Method: thread-name ((thread thread))

automatically generated reader method

Source

api-threads.lisp.

Target Slot

name.

Generic Reader: thread-native-thread (object)
Package

bordeaux-threads-2.

Methods
Reader Method: thread-native-thread ((thread thread))

automatically generated reader method

Source

api-threads.lisp.

Target Slot

native-thread.

Generic Function: warn-in-thread (thread datum &rest args)
Package

bordeaux-threads-2.

Methods
Method: warn-in-thread ((thread thread) datum &rest args)

Interrupt THREAD and call WARN passing DATUM and ARGS.

Source

api-threads.lisp.


6.1.5 Standalone methods

Method: print-object ((lock lock) stream)
Source

api-locks.lisp.

Method: print-object ((lock recursive-lock) stream)
Source

api-locks.lisp.

Method: print-object ((thread thread) stream)
Source

api-threads.lisp.

Method: print-object ((aint atomic-integer) stream)
Source

atomics.lisp.


6.1.6 Conditions

Condition: abnormal-exit
Package

bordeaux-threads-2.

Source

bordeaux-threads.lisp.

Direct superclasses

bordeaux-threads-error.

Direct methods

abnormal-exit-condition.

Direct slots
Slot: exit-condition
Initargs

:condition

Readers

abnormal-exit-condition.

Writers

This slot is read-only.

Condition: bordeaux-threads-error
Package

bordeaux-threads-2.

Source

bordeaux-threads.lisp.

Direct superclasses

error.

Direct subclasses
Condition: not-implemented
Package

bordeaux-threads-2.

Source

bordeaux-threads.lisp.

Direct superclasses

bordeaux-threads-error.

Direct subclasses

6.1.7 Classes

Class: lock

Wrapper for a native non-recursive lock.

Package

bordeaux-threads-2.

Source

api-locks.lisp.

Direct methods
Direct slots
Slot: name
Initargs

:name

Readers

lock-name.

Writers

This slot is read-only.

Slot: native-lock
Initargs

:native-lock

Readers

lock-native-lock.

Writers

This slot is read-only.

Class: recursive-lock

Wrapper for a native recursive lock.

Package

bordeaux-threads-2.

Source

api-locks.lisp.

Direct methods
Direct slots
Slot: name
Initargs

:name

Readers

lock-name.

Writers

This slot is read-only.

Slot: native-lock
Initargs

:native-lock

Readers

lock-native-lock.

Writers

This slot is read-only.

Class: thread
Package

bordeaux-threads-2.

Source

api-threads.lisp.

Direct methods
Direct slots
Slot: name
Initargs

:name

Readers

thread-name.

Writers

This slot is read-only.

Slot: native-thread
Initargs

:native-thread

Readers

thread-native-thread.

Writers

This slot is read-only.

Slot: %lock
Initform

(bordeaux-threads-2:make-lock)

Slot: %return-values
Readers

thread-return-values.

Writers

This slot is read-only.

Slot: %exit-condition
Readers

thread-exit-condition.

Writers

This slot is read-only.


6.1.8 Types

Type: condition-variable ()
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Type: lock ()
Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Type: native-lock ()
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Type: native-recursive-lock ()
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Type: recursive-lock ()
Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Type: semaphore ()
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Type: semaphore ()
Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Type: thread ()
Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Type: timeout ()
Package

bordeaux-threads.

Source

impl-sbcl.lisp.


6.2 Internals


6.2.1 Constants

Constant: +standard-io-bindings+

Standard bindings of printer/reader control variables as per CL:WITH-STANDARD-IO-SYNTAX. Forms are evaluated in the calling thread.

Package

bordeaux-threads-2.

Source

api-threads.lisp.

Constant: +supports-threads-p+

This should be set to T if the running instance has thread support.

Package

bordeaux-threads-2.

Source

bordeaux-threads.lisp.


6.2.2 Special variables

Special Variable: *current-thread*
Package

bordeaux-threads-2.

Source

api-threads.lisp.

Special Variable: *no-condition-wait-timeout-message*
Package

bordeaux-threads.

Source

bordeaux-threads.lisp.

Special Variable: *not-implemented*
Package

bordeaux-threads-2.

Source

bordeaux-threads.lisp.


6.2.3 Macros

Macro: %with-lock ((place timeout) &body body)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Macro: %with-recursive-lock ((place timeout) &body body)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Macro: atomic-cas (place old new)
Package

bordeaux-threads-2.

Source

atomics.lisp.

Macro: atomic-decf (place &optional delta)
Package

bordeaux-threads-2.

Source

atomics.lisp.

Macro: atomic-incf (place &optional delta)
Package

bordeaux-threads-2.

Source

atomics.lisp.

Macro: defbindings (name docstring &body initforms)
Package

bordeaux-threads.

Source

bordeaux-threads.lisp.

Macro: defdfun (name args doc &body body)
Package

bordeaux-threads.

Source

default-implementations.lisp.

Macro: defdmacro (name args doc &body body)
Package

bordeaux-threads.

Source

default-implementations.lisp.

Macro: define-condition-wait-compiler-macro ()
Package

bordeaux-threads.

Source

bordeaux-threads.lisp.


6.2.4 Ordinary functions

Function: %acquire-lock (lock waitp timeout)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Function: %acquire-recursive-lock (lock waitp timeout)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Function: %all-threads ()
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Function: %condition-broadcast (cv)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Function: %condition-notify (cv)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Function: %condition-wait (cv lock timeout)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Function: %current-thread ()
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Function: %destroy-thread (thread)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Function: %get-thread-wrapper (native-thread)
Package

bordeaux-threads-2.

Source

api-threads.lisp.

Function: %interrupt-thread (thread function)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Function: %join-thread (thread)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Function: %make-atomic-integer ()
Package

bordeaux-threads-2.

Source

atomics.lisp.

Function: %make-condition-variable (name)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Function: %make-lock (name)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Function: %make-recursive-lock (name)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Function: %make-semaphore (name count)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Function: %make-thread (function name)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Function: %make-thread (function name)

The actual implementation-dependent function that creates threads.

Package

bordeaux-threads.

Source

impl-sbcl.lisp.

Function: %release-lock (lock)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Function: %release-recursive-lock (lock)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Reader: %semaphore-condition-variable (instance)
Writer: (setf %semaphore-condition-variable) (instance)
Package

bordeaux-threads.

Source

bordeaux-threads.lisp.

Target Slot

condition-variable.

Reader: %semaphore-counter (instance)
Writer: (setf %semaphore-counter) (instance)
Package

bordeaux-threads.

Source

bordeaux-threads.lisp.

Target Slot

counter.

Reader: %semaphore-lock (instance)
Writer: (setf %semaphore-lock) (instance)
Package

bordeaux-threads.

Source

bordeaux-threads.lisp.

Target Slot

lock.

Function: %semaphore-p (object)
Package

bordeaux-threads.

Source

bordeaux-threads.lisp.

Function: %signal-semaphore (semaphore count)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Function: %thread-alive-p (thread)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Function: %thread-name (thread)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Function: %thread-yield ()
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Function: %wait-on-semaphore (semaphore timeout)
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.

Reader: atomic-integer-cell (instance)
Writer: (setf atomic-integer-cell) (instance)
Package

bordeaux-threads-2.

Source

atomics.lisp.

Target Slot

cell.

Function: atomic-integer-p (object)
Package

bordeaux-threads-2.

Source

atomics.lisp.

Function: binding-default-specials (function special-bindings)

Return a closure that binds the symbols in SPECIAL-BINDINGS and calls FUNCTION.

Package

bordeaux-threads.

Source

bordeaux-threads.lisp.

Function: bool (thing)
Package

bordeaux-threads-2.

Source

bordeaux-threads.lisp.

Function: bt-error (msg &rest args)
Package

bordeaux-threads-2.

Source

bordeaux-threads.lisp.

Function: compute-special-bindings (bindings)
Package

bordeaux-threads-2.

Source

api-threads.lisp.

Function: copy-%semaphore (instance)
Package

bordeaux-threads.

Source

bordeaux-threads.lisp.

Function: copy-atomic-integer (instance)
Package

bordeaux-threads-2.

Source

atomics.lisp.

Function: ensure-thread-wrapper (native-thread)
Package

bordeaux-threads-2.

Source

api-threads.lisp.

Function: establish-dynamic-env (thread function special-bindings trap-conditions)

Return a closure that binds the symbols in SPECIAL-BINDINGS and calls FUNCTION.

Package

bordeaux-threads-2.

Source

api-threads.lisp.

Function: implemented-p (op &optional feature)
Package

bordeaux-threads-2.

Source

bordeaux-threads.lisp.

Function: implemented-p* (op &optional feature)
Package

bordeaux-threads-2.

Source

bordeaux-threads.lisp.

Function: make-%semaphore (&key lock condition-variable counter)
Package

bordeaux-threads.

Source

bordeaux-threads.lisp.

Function: make-unknown-thread-name ()
Package

bordeaux-threads-2.

Source

api-threads.lisp.

Function: mark-not-implemented (op &rest features)
Package

bordeaux-threads-2.

Source

bordeaux-threads.lisp.

Function: mark-supported ()
Package

bordeaux-threads.

Source

bordeaux-threads.lisp.

Function: remove-thread-wrapper (native-thread)
Package

bordeaux-threads-2.

Source

api-threads.lisp.

Function: signal-error-if-condition-wait-timeout (timeout)
Package

bordeaux-threads.

Source

bordeaux-threads.lisp.

Function: signal-error-if-current-thread (thread)
Package

bordeaux-threads.

Source

bordeaux-threads.lisp.

Function: signal-not-implemented (op &optional keyarg)
Package

bordeaux-threads-2.

Source

bordeaux-threads.lisp.

Function: (setf thread-wrapper) (native-thread)
Package

bordeaux-threads-2.

Source

api-threads.lisp.


6.2.5 Generic functions

Generic Reader: keyarg-not-implemented-keyarg (condition)
Package

bordeaux-threads-2.

Methods
Reader Method: keyarg-not-implemented-keyarg ((condition keyarg-not-implemented))
Source

bordeaux-threads.lisp.

Target Slot

keyarg.

Generic Reader: keyarg-not-implemented-operation (condition)
Package

bordeaux-threads-2.

Methods
Reader Method: keyarg-not-implemented-operation ((condition keyarg-not-implemented))
Source

bordeaux-threads.lisp.

Target Slot

operation.

Generic Function: make-threading-support-error ()

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.

Package

bordeaux-threads.

Source

bordeaux-threads.lisp.

Methods
Method: make-threading-support-error ()
Generic Reader: message (condition)
Package

bordeaux-threads.

Methods
Reader Method: message ((condition bordeaux-mp-condition))
Source

bordeaux-threads.lisp.

Target Slot

message.

Generic Reader: operation-not-implemented-operation (condition)
Package

bordeaux-threads-2.

Methods
Reader Method: operation-not-implemented-operation ((condition operation-not-implemented))
Source

bordeaux-threads.lisp.

Target Slot

operation.

Generic Reader: thread-exit-condition (object)
Package

bordeaux-threads-2.

Methods
Reader Method: thread-exit-condition ((thread thread))

automatically generated reader method

Source

api-threads.lisp.

Target Slot

%exit-condition.

Generic Reader: thread-return-values (object)
Package

bordeaux-threads-2.

Methods
Reader Method: thread-return-values ((thread thread))

automatically generated reader method

Source

api-threads.lisp.

Target Slot

%return-values.


6.2.6 Conditions

Condition: bordeaux-mp-condition
Package

bordeaux-threads.

Source

bordeaux-threads.lisp.

Direct superclasses

error.

Direct methods

message.

Direct slots
Slot: message
Initargs

:message

Readers

message.

Writers

This slot is read-only.

Condition: bordeaux-threads-simple-error
Package

bordeaux-threads-2.

Source

bordeaux-threads.lisp.

Direct superclasses
Condition: keyarg-not-implemented
Package

bordeaux-threads-2.

Source

bordeaux-threads.lisp.

Direct superclasses

not-implemented.

Direct methods
Direct slots
Slot: operation
Initargs

:operation

Readers

keyarg-not-implemented-operation.

Writers

This slot is read-only.

Slot: keyarg
Initargs

:keyarg

Readers

keyarg-not-implemented-keyarg.

Writers

This slot is read-only.

Condition: operation-not-implemented
Package

bordeaux-threads-2.

Source

bordeaux-threads.lisp.

Direct superclasses

not-implemented.

Direct methods

operation-not-implemented-operation.

Direct slots
Slot: operation
Initargs

:operation

Readers

operation-not-implemented-operation.

Writers

This slot is read-only.


6.2.7 Structures

Structure: %semaphore
Package

bordeaux-threads.

Source

bordeaux-threads.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: lock
Readers

%semaphore-lock.

Writers

(setf %semaphore-lock).

Slot: condition-variable
Readers

%semaphore-condition-variable.

Writers

(setf %semaphore-condition-variable).

Slot: counter
Readers

%semaphore-counter.

Writers

(setf %semaphore-counter).

Structure: atomic-integer

Wrapper for an UNSIGNED-BYTE that allows atomic increment, decrement and swap.
The counter is a machine word: 32/64 bits depending on CPU.

Package

bordeaux-threads-2.

Source

atomics.lisp.

Direct superclasses

structure-object.

Direct methods

print-object.

Direct slots
Slot: cell
Type

bordeaux-threads-2::%atomic-integer-value

Initform

0

Readers

atomic-integer-cell.

Writers

(setf atomic-integer-cell).


6.2.8 Types

Type: %atomic-integer-value ()
Package

bordeaux-threads-2.

Source

atomics.lisp.

Type: native-thread ()
Package

bordeaux-threads-2.

Source

impl-sbcl.lisp.


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   %   (  
A   B   C   D   E   F   G   I   J   K   L   M   N   O   P   R   S   T   W  
Index Entry  Section

%
%acquire-lock: Private ordinary functions
%acquire-recursive-lock: Private ordinary functions
%all-threads: Private ordinary functions
%condition-broadcast: Private ordinary functions
%condition-notify: Private ordinary functions
%condition-wait: Private ordinary functions
%current-thread: Private ordinary functions
%destroy-thread: Private ordinary functions
%get-thread-wrapper: Private ordinary functions
%interrupt-thread: Private ordinary functions
%join-thread: Private ordinary functions
%make-atomic-integer: Private ordinary functions
%make-condition-variable: Private ordinary functions
%make-lock: Private ordinary functions
%make-recursive-lock: Private ordinary functions
%make-semaphore: Private ordinary functions
%make-thread: Private ordinary functions
%make-thread: Private ordinary functions
%release-lock: Private ordinary functions
%release-recursive-lock: Private ordinary functions
%semaphore-condition-variable: Private ordinary functions
%semaphore-counter: Private ordinary functions
%semaphore-lock: Private ordinary functions
%semaphore-p: Private ordinary functions
%signal-semaphore: Private ordinary functions
%thread-alive-p: Private ordinary functions
%thread-name: Private ordinary functions
%thread-yield: Private ordinary functions
%wait-on-semaphore: Private ordinary functions
%with-lock: Private macros
%with-recursive-lock: Private macros

(
(setf %semaphore-condition-variable): Private ordinary functions
(setf %semaphore-counter): Private ordinary functions
(setf %semaphore-lock): Private ordinary functions
(setf atomic-integer-cell): Private ordinary functions
(setf atomic-integer-value): Public ordinary functions
(setf thread-wrapper): Private ordinary functions

A
abnormal-exit-condition: Public generic functions
abnormal-exit-condition: Public generic functions
acquire-lock: Public ordinary functions
acquire-lock: Public ordinary functions
acquire-recursive-lock: Public ordinary functions
acquire-recursive-lock: Public ordinary functions
all-threads: Public ordinary functions
all-threads: Public ordinary functions
atomic-cas: Private macros
atomic-decf: Private macros
atomic-incf: Private macros
atomic-integer-cell: Private ordinary functions
atomic-integer-compare-and-swap: Public ordinary functions
atomic-integer-decf: Public ordinary functions
atomic-integer-incf: Public ordinary functions
atomic-integer-p: Private ordinary functions
atomic-integer-value: Public ordinary functions

B
binding-default-specials: Private ordinary functions
bool: Private ordinary functions
bt-error: Private ordinary functions

C
compute-special-bindings: Private ordinary functions
condition-broadcast: Public ordinary functions
condition-notify: Public ordinary functions
condition-notify: Public ordinary functions
condition-variable-p: Public ordinary functions
condition-wait: Public ordinary functions
condition-wait: Public ordinary functions
copy-%semaphore: Private ordinary functions
copy-atomic-integer: Private ordinary functions
current-thread: Public ordinary functions
current-thread: Public ordinary functions

D
defbindings: Private macros
defdfun: Private macros
defdmacro: Private macros
define-condition-wait-compiler-macro: Private macros
destroy-thread: Public ordinary functions
destroy-thread: Public generic functions
destroy-thread: Public generic functions

E
ensure-thread-wrapper: Private ordinary functions
error-in-thread: Public generic functions
error-in-thread: Public generic functions
establish-dynamic-env: Private ordinary functions

F
Function, %acquire-lock: Private ordinary functions
Function, %acquire-recursive-lock: Private ordinary functions
Function, %all-threads: Private ordinary functions
Function, %condition-broadcast: Private ordinary functions
Function, %condition-notify: Private ordinary functions
Function, %condition-wait: Private ordinary functions
Function, %current-thread: Private ordinary functions
Function, %destroy-thread: Private ordinary functions
Function, %get-thread-wrapper: Private ordinary functions
Function, %interrupt-thread: Private ordinary functions
Function, %join-thread: Private ordinary functions
Function, %make-atomic-integer: Private ordinary functions
Function, %make-condition-variable: Private ordinary functions
Function, %make-lock: Private ordinary functions
Function, %make-recursive-lock: Private ordinary functions
Function, %make-semaphore: Private ordinary functions
Function, %make-thread: Private ordinary functions
Function, %make-thread: Private ordinary functions
Function, %release-lock: Private ordinary functions
Function, %release-recursive-lock: Private ordinary functions
Function, %semaphore-condition-variable: Private ordinary functions
Function, %semaphore-counter: Private ordinary functions
Function, %semaphore-lock: Private ordinary functions
Function, %semaphore-p: Private ordinary functions
Function, %signal-semaphore: Private ordinary functions
Function, %thread-alive-p: Private ordinary functions
Function, %thread-name: Private ordinary functions
Function, %thread-yield: Private ordinary functions
Function, %wait-on-semaphore: Private ordinary functions
Function, (setf %semaphore-condition-variable): Private ordinary functions
Function, (setf %semaphore-counter): Private ordinary functions
Function, (setf %semaphore-lock): Private ordinary functions
Function, (setf atomic-integer-cell): Private ordinary functions
Function, (setf atomic-integer-value): Public ordinary functions
Function, (setf thread-wrapper): Private ordinary functions
Function, acquire-lock: Public ordinary functions
Function, acquire-lock: Public ordinary functions
Function, acquire-recursive-lock: Public ordinary functions
Function, acquire-recursive-lock: Public ordinary functions
Function, all-threads: Public ordinary functions
Function, all-threads: Public ordinary functions
Function, atomic-integer-cell: Private ordinary functions
Function, atomic-integer-compare-and-swap: Public ordinary functions
Function, atomic-integer-decf: Public ordinary functions
Function, atomic-integer-incf: Public ordinary functions
Function, atomic-integer-p: Private ordinary functions
Function, atomic-integer-value: Public ordinary functions
Function, binding-default-specials: Private ordinary functions
Function, bool: Private ordinary functions
Function, bt-error: Private ordinary functions
Function, compute-special-bindings: Private ordinary functions
Function, condition-broadcast: Public ordinary functions
Function, condition-notify: Public ordinary functions
Function, condition-notify: Public ordinary functions
Function, condition-variable-p: Public ordinary functions
Function, condition-wait: Public ordinary functions
Function, condition-wait: Public ordinary functions
Function, copy-%semaphore: Private ordinary functions
Function, copy-atomic-integer: Private ordinary functions
Function, current-thread: Public ordinary functions
Function, current-thread: Public ordinary functions
Function, destroy-thread: Public ordinary functions
Function, ensure-thread-wrapper: Private ordinary functions
Function, establish-dynamic-env: Private ordinary functions
Function, implemented-p: Private ordinary functions
Function, implemented-p*: Private ordinary functions
Function, interrupt-thread: Public ordinary functions
Function, join-thread: Public ordinary functions
Function, lock-p: Public ordinary functions
Function, lockp: Public ordinary functions
Function, make-%semaphore: Private ordinary functions
Function, make-atomic-integer: Public ordinary functions
Function, make-condition-variable: Public ordinary functions
Function, make-condition-variable: Public ordinary functions
Function, make-lock: Public ordinary functions
Function, make-lock: Public ordinary functions
Function, make-recursive-lock: Public ordinary functions
Function, make-recursive-lock: Public ordinary functions
Function, make-semaphore: Public ordinary functions
Function, make-semaphore: Public ordinary functions
Function, make-thread: Public ordinary functions
Function, make-thread: Public ordinary functions
Function, make-unknown-thread-name: Private ordinary functions
Function, mark-not-implemented: Private ordinary functions
Function, mark-supported: Private ordinary functions
Function, native-lock-p: Public ordinary functions
Function, native-recursive-lock-p: Public ordinary functions
Function, recursive-lock-p: Public ordinary functions
Function, recursive-lock-p: Public ordinary functions
Function, release-lock: Public ordinary functions
Function, release-lock: Public ordinary functions
Function, release-recursive-lock: Public ordinary functions
Function, release-recursive-lock: Public ordinary functions
Function, remove-thread-wrapper: Private ordinary functions
Function, semaphore-p: Public ordinary functions
Function, semaphorep: Public ordinary functions
Function, signal-error-if-condition-wait-timeout: Private ordinary functions
Function, signal-error-if-current-thread: Private ordinary functions
Function, signal-not-implemented: Private ordinary functions
Function, signal-semaphore: Public ordinary functions
Function, signal-semaphore: Public ordinary functions
Function, start-multiprocessing: Public ordinary functions
Function, start-multiprocessing: Public ordinary functions
Function, thread-alive-p: Public ordinary functions
Function, thread-name: Public ordinary functions
Function, thread-yield: Public ordinary functions
Function, thread-yield: Public ordinary functions
Function, threadp: Public ordinary functions
Function, threadp: Public ordinary functions
Function, wait-on-semaphore: Public ordinary functions
Function, wait-on-semaphore: Public ordinary functions

G
Generic Function, abnormal-exit-condition: Public generic functions
Generic Function, destroy-thread: Public generic functions
Generic Function, error-in-thread: Public generic functions
Generic Function, interrupt-thread: Public generic functions
Generic Function, join-thread: Public generic functions
Generic Function, keyarg-not-implemented-keyarg: Private generic functions
Generic Function, keyarg-not-implemented-operation: Private generic functions
Generic Function, lock-name: Public generic functions
Generic Function, lock-native-lock: Public generic functions
Generic Function, make-threading-support-error: Private generic functions
Generic Function, message: Private generic functions
Generic Function, operation-not-implemented-operation: Private generic functions
Generic Function, signal-in-thread: Public generic functions
Generic Function, thread-alive-p: Public generic functions
Generic Function, thread-exit-condition: Private generic functions
Generic Function, thread-name: Public generic functions
Generic Function, thread-native-thread: Public generic functions
Generic Function, thread-return-values: Private generic functions
Generic Function, warn-in-thread: Public generic functions

I
implemented-p: Private ordinary functions
implemented-p*: Private ordinary functions
interrupt-thread: Public ordinary functions
interrupt-thread: Public generic functions
interrupt-thread: Public generic functions

J
join-thread: Public ordinary functions
join-thread: Public generic functions
join-thread: Public generic functions

K
keyarg-not-implemented-keyarg: Private generic functions
keyarg-not-implemented-keyarg: Private generic functions
keyarg-not-implemented-operation: Private generic functions
keyarg-not-implemented-operation: Private generic functions

L
lock-name: Public generic functions
lock-name: Public generic functions
lock-name: Public generic functions
lock-native-lock: Public generic functions
lock-native-lock: Public generic functions
lock-native-lock: Public generic functions
lock-p: Public ordinary functions
lockp: Public ordinary functions

M
Macro, %with-lock: Private macros
Macro, %with-recursive-lock: Private macros
Macro, atomic-cas: Private macros
Macro, atomic-decf: Private macros
Macro, atomic-incf: Private macros
Macro, defbindings: Private macros
Macro, defdfun: Private macros
Macro, defdmacro: Private macros
Macro, define-condition-wait-compiler-macro: Private macros
Macro, with-lock-held: Public macros
Macro, with-lock-held: Public macros
Macro, with-recursive-lock-held: Public macros
Macro, with-recursive-lock-held: Public macros
Macro, with-timeout: Public macros
Macro, with-timeout: Public macros
make-%semaphore: Private ordinary functions
make-atomic-integer: Public ordinary functions
make-condition-variable: Public ordinary functions
make-condition-variable: Public ordinary functions
make-lock: Public ordinary functions
make-lock: Public ordinary functions
make-recursive-lock: Public ordinary functions
make-recursive-lock: Public ordinary functions
make-semaphore: Public ordinary functions
make-semaphore: Public ordinary functions
make-thread: Public ordinary functions
make-thread: Public ordinary functions
make-threading-support-error: Private generic functions
make-threading-support-error: Private generic functions
make-unknown-thread-name: Private ordinary functions
mark-not-implemented: Private ordinary functions
mark-supported: Private ordinary functions
message: Private generic functions
message: Private generic functions
Method, abnormal-exit-condition: Public generic functions
Method, destroy-thread: Public generic functions
Method, error-in-thread: Public generic functions
Method, interrupt-thread: Public generic functions
Method, join-thread: Public generic functions
Method, keyarg-not-implemented-keyarg: Private generic functions
Method, keyarg-not-implemented-operation: Private generic functions
Method, lock-name: Public generic functions
Method, lock-name: Public generic functions
Method, lock-native-lock: Public generic functions
Method, lock-native-lock: Public generic functions
Method, make-threading-support-error: Private generic functions
Method, message: Private generic functions
Method, operation-not-implemented-operation: Private generic functions
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, signal-in-thread: Public generic functions
Method, thread-alive-p: Public generic functions
Method, thread-exit-condition: Private generic functions
Method, thread-name: Public generic functions
Method, thread-native-thread: Public generic functions
Method, thread-return-values: Private generic functions
Method, warn-in-thread: Public generic functions

N
native-lock-p: Public ordinary functions
native-recursive-lock-p: Public ordinary functions

O
operation-not-implemented-operation: Private generic functions
operation-not-implemented-operation: Private generic functions

P
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods
print-object: Public standalone methods

R
recursive-lock-p: Public ordinary functions
recursive-lock-p: Public ordinary functions
release-lock: Public ordinary functions
release-lock: Public ordinary functions
release-recursive-lock: Public ordinary functions
release-recursive-lock: Public ordinary functions
remove-thread-wrapper: Private ordinary functions

S
semaphore-p: Public ordinary functions
semaphorep: Public ordinary functions
signal-error-if-condition-wait-timeout: Private ordinary functions
signal-error-if-current-thread: Private ordinary functions
signal-in-thread: Public generic functions
signal-in-thread: Public generic functions
signal-not-implemented: Private ordinary functions
signal-semaphore: Public ordinary functions
signal-semaphore: Public ordinary functions
start-multiprocessing: Public ordinary functions
start-multiprocessing: Public ordinary functions

T
thread-alive-p: Public ordinary functions
thread-alive-p: Public generic functions
thread-alive-p: Public generic functions
thread-exit-condition: Private generic functions
thread-exit-condition: Private generic functions
thread-name: Public ordinary functions
thread-name: Public generic functions
thread-name: Public generic functions
thread-native-thread: Public generic functions
thread-native-thread: Public generic functions
thread-return-values: Private generic functions
thread-return-values: Private generic functions
thread-yield: Public ordinary functions
thread-yield: Public ordinary functions
threadp: Public ordinary functions
threadp: Public ordinary functions

W
wait-on-semaphore: Public ordinary functions
wait-on-semaphore: Public ordinary functions
warn-in-thread: Public generic functions
warn-in-thread: Public generic functions
with-lock-held: Public macros
with-lock-held: Public macros
with-recursive-lock-held: Public macros
with-recursive-lock-held: Public macros
with-timeout: Public macros
with-timeout: Public macros


A.3 Variables

Jump to:   %   *   +  
C   E   K   L   M   N   O   S  
Index Entry  Section

%
%exit-condition: Public classes
%lock: Public classes
%return-values: Public classes

*
*current-thread*: Private special variables
*default-special-bindings*: Public special variables
*default-special-bindings*: Public special variables
*no-condition-wait-timeout-message*: Private special variables
*not-implemented*: Private special variables
*standard-io-bindings*: Public special variables
*supports-threads-p*: Public special variables

+
+standard-io-bindings+: Private constants
+supports-threads-p+: Private constants

C
cell: Private structures
condition-variable: Private structures
Constant, +standard-io-bindings+: Private constants
Constant, +supports-threads-p+: Private constants
counter: Private structures

E
exit-condition: Public conditions

K
keyarg: Private conditions

L
lock: Private structures

M
message: Private conditions

N
name: Public classes
name: Public classes
name: Public classes
native-lock: Public classes
native-lock: Public classes
native-thread: Public classes

O
operation: Private conditions
operation: Private conditions

S
Slot, %exit-condition: Public classes
Slot, %lock: Public classes
Slot, %return-values: Public classes
Slot, cell: Private structures
Slot, condition-variable: Private structures
Slot, counter: Private structures
Slot, exit-condition: Public conditions
Slot, keyarg: Private conditions
Slot, lock: Private structures
Slot, message: Private conditions
Slot, name: Public classes
Slot, name: Public classes
Slot, name: Public classes
Slot, native-lock: Public classes
Slot, native-lock: Public classes
Slot, native-thread: Public classes
Slot, operation: Private conditions
Slot, operation: Private conditions
Special Variable, *current-thread*: Private special variables
Special Variable, *default-special-bindings*: Public special variables
Special Variable, *default-special-bindings*: Public special variables
Special Variable, *no-condition-wait-timeout-message*: Private special variables
Special Variable, *not-implemented*: Private special variables
Special Variable, *standard-io-bindings*: Public special variables
Special Variable, *supports-threads-p*: Public special variables


A.4 Data types

Jump to:   %  
A   B   C   D   F   I   K   L   M   N   O   P   R   S   T   V  
Index Entry  Section

%
%atomic-integer-value: Private types
%semaphore: Private structures

A
abnormal-exit: Public conditions
api-condition-variables.lisp: The bordeaux-threads/api-v2/api-condition-variables․lisp file
api-locks.lisp: The bordeaux-threads/api-v2/api-locks․lisp file
api-semaphores.lisp: The bordeaux-threads/api-v2/api-semaphores․lisp file
api-threads.lisp: The bordeaux-threads/api-v2/api-threads․lisp file
api-v1: The bordeaux-threads/api-v1 module
api-v2: The bordeaux-threads/api-v2 module
atomic-integer: Private structures
atomics-java.lisp: The bordeaux-threads/api-v2/atomics-java․lisp file
atomics.lisp: The bordeaux-threads/api-v2/atomics․lisp file

B
bordeaux-mp-condition: Private conditions
bordeaux-threads: The bordeaux-threads system
bordeaux-threads: The bordeaux-threads package
bordeaux-threads-2: The bordeaux-threads-2 package
bordeaux-threads-error: Public conditions
bordeaux-threads-simple-error: Private conditions
bordeaux-threads.asd: The bordeaux-threads/bordeaux-threads․asd file
bordeaux-threads.lisp: The bordeaux-threads/api-v1/bordeaux-threads․lisp file
bordeaux-threads.lisp: The bordeaux-threads/api-v2/bordeaux-threads․lisp file

C
Class, lock: Public classes
Class, recursive-lock: Public classes
Class, thread: Public classes
Condition, abnormal-exit: Public conditions
Condition, bordeaux-mp-condition: Private conditions
Condition, bordeaux-threads-error: Public conditions
Condition, bordeaux-threads-simple-error: Private conditions
Condition, keyarg-not-implemented: Private conditions
Condition, not-implemented: Public conditions
Condition, operation-not-implemented: Private conditions
condition-variable: Public types
condition-variables.lisp: The bordeaux-threads/api-v1/condition-variables․lisp file

D
default-implementations.lisp: The bordeaux-threads/api-v1/default-implementations․lisp file

F
File, api-condition-variables.lisp: The bordeaux-threads/api-v2/api-condition-variables․lisp file
File, api-locks.lisp: The bordeaux-threads/api-v2/api-locks․lisp file
File, api-semaphores.lisp: The bordeaux-threads/api-v2/api-semaphores․lisp file
File, api-threads.lisp: The bordeaux-threads/api-v2/api-threads․lisp file
File, atomics-java.lisp: The bordeaux-threads/api-v2/atomics-java․lisp file
File, atomics.lisp: The bordeaux-threads/api-v2/atomics․lisp file
File, bordeaux-threads.asd: The bordeaux-threads/bordeaux-threads․asd file
File, bordeaux-threads.lisp: The bordeaux-threads/api-v1/bordeaux-threads․lisp file
File, bordeaux-threads.lisp: The bordeaux-threads/api-v2/bordeaux-threads․lisp file
File, condition-variables.lisp: The bordeaux-threads/api-v1/condition-variables․lisp file
File, default-implementations.lisp: The bordeaux-threads/api-v1/default-implementations․lisp file
File, impl-abcl.lisp: The bordeaux-threads/api-v1/impl-abcl․lisp file
File, impl-abcl.lisp: The bordeaux-threads/api-v2/impl-abcl․lisp file
File, impl-allegro.lisp: The bordeaux-threads/api-v1/impl-allegro․lisp file
File, impl-allegro.lisp: The bordeaux-threads/api-v2/impl-allegro․lisp file
File, impl-clasp.lisp: The bordeaux-threads/api-v1/impl-clasp․lisp file
File, impl-clasp.lisp: The bordeaux-threads/api-v2/impl-clasp․lisp file
File, impl-clisp.lisp: The bordeaux-threads/api-v1/impl-clisp․lisp file
File, impl-clisp.lisp: The bordeaux-threads/api-v2/impl-clisp․lisp file
File, impl-clozure.lisp: The bordeaux-threads/api-v1/impl-clozure․lisp file
File, impl-clozure.lisp: The bordeaux-threads/api-v2/impl-clozure․lisp file
File, impl-cmucl.lisp: The bordeaux-threads/api-v1/impl-cmucl․lisp file
File, impl-cmucl.lisp: The bordeaux-threads/api-v2/impl-cmucl․lisp file
File, impl-condition-variables-semaphores.lisp: The bordeaux-threads/api-v2/impl-condition-variables-semaphores․lisp file
File, impl-corman.lisp: The bordeaux-threads/api-v1/impl-corman․lisp file
File, impl-corman.lisp: The bordeaux-threads/api-v2/impl-corman․lisp file
File, impl-ecl.lisp: The bordeaux-threads/api-v1/impl-ecl․lisp file
File, impl-ecl.lisp: The bordeaux-threads/api-v2/impl-ecl․lisp file
File, impl-genera.lisp: The bordeaux-threads/api-v1/impl-genera․lisp file
File, impl-genera.lisp: The bordeaux-threads/api-v2/impl-genera․lisp file
File, impl-lispworks-condition-variables.lisp: The bordeaux-threads/api-v1/impl-lispworks-condition-variables․lisp file
File, impl-lispworks.lisp: The bordeaux-threads/api-v1/impl-lispworks․lisp file
File, impl-lispworks.lisp: The bordeaux-threads/api-v2/impl-lispworks․lisp file
File, impl-mcl.lisp: The bordeaux-threads/api-v1/impl-mcl․lisp file
File, impl-mcl.lisp: The bordeaux-threads/api-v2/impl-mcl․lisp file
File, impl-mezzano.lisp: The bordeaux-threads/api-v1/impl-mezzano․lisp file
File, impl-mezzano.lisp: The bordeaux-threads/api-v2/impl-mezzano․lisp file
File, impl-mkcl.lisp: The bordeaux-threads/api-v1/impl-mkcl․lisp file
File, impl-mkcl.lisp: The bordeaux-threads/api-v2/impl-mkcl․lisp file
File, impl-sbcl.lisp: The bordeaux-threads/api-v1/impl-sbcl․lisp file
File, impl-sbcl.lisp: The bordeaux-threads/api-v2/impl-sbcl․lisp file
File, impl-scl.lisp: The bordeaux-threads/api-v1/impl-scl․lisp file
File, impl-scl.lisp: The bordeaux-threads/api-v2/impl-scl․lisp file
File, pkgdcl.lisp: The bordeaux-threads/api-v1/pkgdcl․lisp file
File, pkgdcl.lisp: The bordeaux-threads/api-v2/pkgdcl․lisp file
File, timeout-interrupt.lisp: The bordeaux-threads/api-v2/timeout-interrupt․lisp file
File, version.sexp: The bordeaux-threads/version․sexp file

I
impl-abcl.lisp: The bordeaux-threads/api-v1/impl-abcl․lisp file
impl-abcl.lisp: The bordeaux-threads/api-v2/impl-abcl․lisp file
impl-allegro.lisp: The bordeaux-threads/api-v1/impl-allegro․lisp file
impl-allegro.lisp: The bordeaux-threads/api-v2/impl-allegro․lisp file
impl-clasp.lisp: The bordeaux-threads/api-v1/impl-clasp․lisp file
impl-clasp.lisp: The bordeaux-threads/api-v2/impl-clasp․lisp file
impl-clisp.lisp: The bordeaux-threads/api-v1/impl-clisp․lisp file
impl-clisp.lisp: The bordeaux-threads/api-v2/impl-clisp․lisp file
impl-clozure.lisp: The bordeaux-threads/api-v1/impl-clozure․lisp file
impl-clozure.lisp: The bordeaux-threads/api-v2/impl-clozure․lisp file
impl-cmucl.lisp: The bordeaux-threads/api-v1/impl-cmucl․lisp file
impl-cmucl.lisp: The bordeaux-threads/api-v2/impl-cmucl․lisp file
impl-condition-variables-semaphores.lisp: The bordeaux-threads/api-v2/impl-condition-variables-semaphores․lisp file
impl-corman.lisp: The bordeaux-threads/api-v1/impl-corman․lisp file
impl-corman.lisp: The bordeaux-threads/api-v2/impl-corman․lisp file
impl-ecl.lisp: The bordeaux-threads/api-v1/impl-ecl․lisp file
impl-ecl.lisp: The bordeaux-threads/api-v2/impl-ecl․lisp file
impl-genera.lisp: The bordeaux-threads/api-v1/impl-genera․lisp file
impl-genera.lisp: The bordeaux-threads/api-v2/impl-genera․lisp file
impl-lispworks-condition-variables.lisp: The bordeaux-threads/api-v1/impl-lispworks-condition-variables․lisp file
impl-lispworks.lisp: The bordeaux-threads/api-v1/impl-lispworks․lisp file
impl-lispworks.lisp: The bordeaux-threads/api-v2/impl-lispworks․lisp file
impl-mcl.lisp: The bordeaux-threads/api-v1/impl-mcl․lisp file
impl-mcl.lisp: The bordeaux-threads/api-v2/impl-mcl․lisp file
impl-mezzano.lisp: The bordeaux-threads/api-v1/impl-mezzano․lisp file
impl-mezzano.lisp: The bordeaux-threads/api-v2/impl-mezzano․lisp file
impl-mkcl.lisp: The bordeaux-threads/api-v1/impl-mkcl․lisp file
impl-mkcl.lisp: The bordeaux-threads/api-v2/impl-mkcl․lisp file
impl-sbcl.lisp: The bordeaux-threads/api-v1/impl-sbcl․lisp file
impl-sbcl.lisp: The bordeaux-threads/api-v2/impl-sbcl․lisp file
impl-scl.lisp: The bordeaux-threads/api-v1/impl-scl․lisp file
impl-scl.lisp: The bordeaux-threads/api-v2/impl-scl․lisp file

K
keyarg-not-implemented: Private conditions

L
lock: Public classes
lock: Public types

M
Module, api-v1: The bordeaux-threads/api-v1 module
Module, api-v2: The bordeaux-threads/api-v2 module

N
native-lock: Public types
native-recursive-lock: Public types
native-thread: Private types
not-implemented: Public conditions

O
operation-not-implemented: Private conditions

P
Package, bordeaux-threads: The bordeaux-threads package
Package, bordeaux-threads-2: The bordeaux-threads-2 package
pkgdcl.lisp: The bordeaux-threads/api-v1/pkgdcl․lisp file
pkgdcl.lisp: The bordeaux-threads/api-v2/pkgdcl․lisp file

R
recursive-lock: Public classes
recursive-lock: Public types

S
semaphore: Public types
semaphore: Public types
Structure, %semaphore: Private structures
Structure, atomic-integer: Private structures
System, bordeaux-threads: The bordeaux-threads system

T
thread: Public classes
thread: Public types
timeout: Public types
timeout-interrupt.lisp: The bordeaux-threads/api-v2/timeout-interrupt․lisp file
Type, %atomic-integer-value: Private types
Type, condition-variable: Public types
Type, lock: Public types
Type, native-lock: Public types
Type, native-recursive-lock: Public types
Type, native-thread: Private types
Type, recursive-lock: Public types
Type, semaphore: Public types
Type, semaphore: Public types
Type, thread: Public types
Type, timeout: Public types

V
version.sexp: The bordeaux-threads/version․sexp file