The cl-muth Reference Manual

This is the cl-muth Reference Manual, version 1.0.0, generated automatically by Declt version 4.0 beta 2 "William Riker" on Mon Feb 26 15:29:20 2024 GMT+0.

Table of Contents


1 Introduction


2 Systems

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


2.1 cl-muth

Multithreading utilities

Author

Pavel Korolev

Contact

License

MIT

Version

1.0.0

Defsystem Dependency

trivial-features (system).

Dependencies
  • alexandria (system).
  • bordeaux-threads (system).
  • bodge-queue (system).
  • bodge-heap (system).
Source

cl-muth.asd.

Child Components

3 Modules

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


3.1 cl-muth/sbcl

If Feature

:sbcl

Dependency

thread-pool.lisp (file).

Source

cl-muth.asd.

Parent Component

cl-muth (system).

Child Components

3.2 cl-muth/ccl

If Feature

:ccl

Dependencies
Source

cl-muth.asd.

Parent Component

cl-muth (system).

Child Components

3.3 cl-muth/other

If Feature

(:not (:or :ccl :sbcl))

Dependencies
Source

cl-muth.asd.

Parent Component

cl-muth (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 cl-muth/cl-muth.asd

Source

cl-muth.asd.

Parent Component

cl-muth (system).

ASDF Systems

cl-muth.


4.1.2 cl-muth/packages.lisp

Source

cl-muth.asd.

Parent Component

cl-muth (system).

Packages

cl-muth.


4.1.3 cl-muth/utils.lisp

Dependency

packages.lisp (file).

Source

cl-muth.asd.

Parent Component

cl-muth (system).

Internals

4.1.4 cl-muth/guarded-reference.lisp

Dependency

utils.lisp (file).

Source

cl-muth.asd.

Parent Component

cl-muth (system).

Public Interface
Internals

guarded-reference (class).


4.1.5 cl-muth/blocking-queue.lisp

Dependency

guarded-reference.lisp (file).

Source

cl-muth.asd.

Parent Component

cl-muth (system).

Public Interface
Internals

4.1.6 cl-muth/latch.lisp

Dependency

blocking-queue.lisp (file).

Source

cl-muth.asd.

Parent Component

cl-muth (system).

Public Interface
Internals

simple-latch (class).


4.1.7 cl-muth/thread-pool.lisp

Dependency

latch.lisp (file).

Source

cl-muth.asd.

Parent Component

cl-muth (system).

Public Interface
Internals

4.1.8 cl-muth/sbcl/atomic.lisp

Source

cl-muth.asd.

Parent Component

sbcl (module).

Internals

4.1.9 cl-muth/sbcl/spin-lock.lisp

Dependency

atomic.lisp (file).

Source

cl-muth.asd.

Parent Component

sbcl (module).

Internals

4.1.10 cl-muth/ccl/atomic.lisp

Source

cl-muth.asd.

Parent Component

ccl (module).


4.1.11 cl-muth/ccl/spin-lock.lisp

Dependency

atomic.lisp (file).

Source

cl-muth.asd.

Parent Component

ccl (module).


4.1.12 cl-muth/other/atomic.lisp

Source

cl-muth.asd.

Parent Component

other (module).


4.1.13 cl-muth/other/spin-lock.lisp

Dependency

atomic.lisp (file).

Source

cl-muth.asd.

Parent Component

other (module).


4.1.14 cl-muth/atomic.lisp

Dependencies
Source

cl-muth.asd.

Parent Component

cl-muth (system).

Public Interface

4.1.15 cl-muth/spin-lock.lisp

Dependency

atomic.lisp (file).

Source

cl-muth.asd.

Parent Component

cl-muth (system).

Public Interface

4.1.16 cl-muth/blocking-timed-queue.lisp

Dependency

spin-lock.lisp (file).

Source

cl-muth.asd.

Parent Component

cl-muth (system).

Public Interface
Internals

4.1.17 cl-muth/scheduler.lisp

Dependency

blocking-timed-queue.lisp (file).

Source

cl-muth.asd.

Parent Component

cl-muth (system).

Public Interface
Internals

5 Packages

Packages are listed by definition order.


5.1 cl-muth

Source

packages.lisp.

Nicknames
  • mt
  • muth
Use List
  • alexandria.
  • bordeaux-threads.
  • 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 Macros

Macro: wait-with-latch ((latch-name &optional count) &body body)
Package

cl-muth.

Source

latch.lisp.

Macro: with-guarded-reference ((name &optional value) &body body)
Package

cl-muth.

Source

guarded-reference.lisp.

Macro: with-spin-lock-held ((spin-lock) &body body)
Package

cl-muth.

Source

spin-lock.lisp.

Macro: within-pool ((pool-place &optional priority) &body body)
Package

cl-muth.

Source

thread-pool.lisp.


6.1.2 Ordinary functions

Function: acquire-spin-lock (spin-lock)
Package

cl-muth.

Source

spin-lock.lisp.

Function: blocking-timed-queue-interrupt (queue)
Package

cl-muth.

Source

blocking-timed-queue.lisp.

Function: blocking-timed-queue-pop (queue)
Package

cl-muth.

Source

blocking-timed-queue.lisp.

Function: blocking-timed-queue-push (queue value wait-sec)
Package

cl-muth.

Source

blocking-timed-queue.lisp.

Function: close-pool (pool)
Package

cl-muth.

Source

thread-pool.lisp.

Function: decrement-atomic-counter (counter)

Returns new value

Package

cl-muth.

Source

atomic.lisp.

Function: guarded-value-of (guarded-ref)
Package

cl-muth.

Source

guarded-reference.lisp.

Function: (setf guarded-value-of) (guarded-ref)
Package

cl-muth.

Source

guarded-reference.lisp.

Function: interrupt (blocking-queue)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: make-atomic-counter (&optional value)
Package

cl-muth.

Source

atomic.lisp.

Function: make-blocking-queue (&optional max-size)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: make-blocking-timed-queue (&key condivar lock heap)
Package

cl-muth.

Source

blocking-timed-queue.lisp.

Function: make-guarded-reference (object)
Package

cl-muth.

Source

guarded-reference.lisp.

Function: make-latch (&optional count)
Package

cl-muth.

Source

latch.lisp.

Function: make-scheduler ()
Package

cl-muth.

Source

scheduler.lisp.

Function: make-spin-lock ()
Package

cl-muth.

Source

spin-lock.lisp.

Function: make-thread-pool (pool-size)
Package

cl-muth.

Source

thread-pool.lisp.

Function: open-latch (latch)
Package

cl-muth.

Source

latch.lisp.

Function: open-pool (pool &optional name)
Package

cl-muth.

Source

thread-pool.lisp.

Function: pool-alive-p (pool)
Package

cl-muth.

Source

thread-pool.lisp.

Function: pop-from (blocking-queue)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: push-to-pool (pool fn &optional priority)
Package

cl-muth.

Source

thread-pool.lisp.

Function: put-into (blocking-queue item &optional priority)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: release-spin-lock (spin-lock)
Package

cl-muth.

Source

spin-lock.lisp.

Function: schedule (scheduler task wait-sec &optional interval-sec)
Package

cl-muth.

Source

scheduler.lisp.

Function: start-scheduler (scheduler &key background)
Package

cl-muth.

Source

scheduler.lisp.

Function: stop-scheduler (scheduler)
Package

cl-muth.

Source

scheduler.lisp.

Function: try-put-into (blocking-queue item &optional priority)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: try-put-replacing (blocking-queue item &optional priority)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: unschedule ()
Package

cl-muth.

Source

scheduler.lisp.

Function: wait-for-latch (latch)
Package

cl-muth.

Source

latch.lisp.


6.1.3 Conditions

Condition: interrupted
Package

cl-muth.

Source

blocking-queue.lisp.

Direct superclasses

control-error.


6.2 Internals


6.2.1 Constants

Constant: +cas-sleep+
Package

cl-muth.

Source

utils.lisp.

Constant: +double-float-drift-time-correction+
Package

cl-muth.

Source

scheduler.lisp.

Constant: +iterations-until-wait+
Package

cl-muth.

Source

blocking-queue.lisp.


6.2.2 Special variables

Special Variable: *unscheduled-p*
Package

cl-muth.


6.2.3 Macros

Macro: %compare-and-swap (place old new)

Tries to atomically set a value of PLACE to be NEW if it was EQ to OLD, returning non-nil if successful.

Package

cl-muth.

Source

spin-lock.lisp.


6.2.4 Ordinary functions

Function: %%make-atomic-counter (value)
Package

cl-muth.

Source

atomic.lisp.

Function: %%make-spin-lock ()
Package

cl-muth.

Source

spin-lock.lisp.

Function: %acquire-spin-lock (spin-lock)
Package

cl-muth.

Source

spin-lock.lisp.

Function: %blocking-timed-queue-peek-time (queue)
Package

cl-muth.

Source

blocking-timed-queue.lisp.

Function: %blocking-timed-queue-pop (queue)
Package

cl-muth.

Source

blocking-timed-queue.lisp.

Function: %decrement-counter (counter)
Package

cl-muth.

Source

atomic.lisp.

Function: %make-atomic-counter (value)
Package

cl-muth.

Source

atomic.lisp.

Function: %make-priority-list (buckets)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: %make-spin-lock ()
Package

cl-muth.

Source

spin-lock.lisp.

Function: %make-thread-pool-worker (pool name)
Package

cl-muth.

Source

thread-pool.lisp.

Function: %pq-empty-p (blocking-queue)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: %pq-length (blocking-queue)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: %pq-less-or-same-priority-present (blocking-queue priority)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: %pq-pop (blocking-queue)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: %pq-pop-least-important (blocking-queue)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: %pq-push (blocking-queue item priority)
Package

cl-muth.

Source

blocking-queue.lisp.

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

cl-muth.

Source

spin-lock.lisp.

Function: %reschedule-task (scheduler task interval expected-time current-time)
Package

cl-muth.

Source

scheduler.lisp.

Function: %wait-interruptibly (this)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: atomic-counter-p (object)
Package

cl-muth.

Source

atomic.lisp.

Reader: atomic-counter-value (instance)
Writer: (setf atomic-counter-value) (instance)
Package

cl-muth.

Source

atomic.lisp.

Target Slot

value.

Reader: blocking-timed-queue-condivar (instance)
Writer: (setf blocking-timed-queue-condivar) (instance)
Package

cl-muth.

Source

blocking-timed-queue.lisp.

Target Slot

condivar.

Reader: blocking-timed-queue-heap (instance)
Writer: (setf blocking-timed-queue-heap) (instance)
Package

cl-muth.

Source

blocking-timed-queue.lisp.

Target Slot

heap.

Reader: blocking-timed-queue-lock (instance)
Writer: (setf blocking-timed-queue-lock) (instance)
Package

cl-muth.

Source

blocking-timed-queue.lisp.

Target Slot

lock.

Function: blocking-timed-queue-p (object)
Package

cl-muth.

Source

blocking-timed-queue.lisp.

Function: copy-atomic-counter (instance)
Package

cl-muth.

Source

atomic.lisp.

Function: copy-blocking-timed-queue (instance)
Package

cl-muth.

Source

blocking-timed-queue.lisp.

Function: copy-priority-list (instance)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: copy-spin-lock (instance)
Package

cl-muth.

Source

spin-lock.lisp.

Function: copy-thread-pool (instance)
Package

cl-muth.

Source

thread-pool.lisp.

Function: current-seconds ()
Package

cl-muth.

Source

utils.lisp.

Function: make-priority-list ()
Package

cl-muth.

Source

blocking-queue.lisp.

Reader: pl-buckets (instance)
Package

cl-muth.

Source

blocking-queue.lisp.

Target Slot

buckets.

Reader: pl-length (instance)
Writer: (setf pl-length) (instance)
Package

cl-muth.

Source

blocking-queue.lisp.

Target Slot

length.

Function: priority->index (priority)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: priority-list-empty-p (queue)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: priority-list-length (queue)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: priority-list-p (object)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: priority-list-peek-least-priority (queue)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: priority-list-pop (queue)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: priority-list-pop-least-important (queue)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: priority-list-push (queue item priority)
Package

cl-muth.

Source

blocking-queue.lisp.

Function: process-next-scheduler-event (scheduler)
Package

cl-muth.

Source

scheduler.lisp.

Reader: spin-lock-owned (instance)
Writer: (setf spin-lock-owned) (instance)
Package

cl-muth.

Source

spin-lock.lisp.

Target Slot

owned.

Function: spin-lock-p (object)
Package

cl-muth.

Source

spin-lock.lisp.

Function: thread-pool-p (object)
Package

cl-muth.

Source

thread-pool.lisp.

Reader: tp-blocking-queue (instance)
Writer: (setf tp-blocking-queue) (instance)
Package

cl-muth.

Source

thread-pool.lisp.

Target Slot

blocking-queue.

Reader: tp-enabled-p (instance)
Writer: (setf tp-enabled-p) (instance)
Package

cl-muth.

Source

thread-pool.lisp.

Target Slot

enabled-p.

Reader: tp-lock (instance)
Package

cl-muth.

Source

thread-pool.lisp.

Target Slot

lock.

Reader: tp-pool-size (instance)
Package

cl-muth.

Source

thread-pool.lisp.

Target Slot

pool-size.

Reader: tp-workers (instance)
Writer: (setf tp-workers) (instance)
Package

cl-muth.

Source

thread-pool.lisp.

Target Slot

workers.


6.2.5 Generic functions

Generic Reader: %queue-of (object)
Package

cl-muth.

Methods
Reader Method: %queue-of ((blocking-queue blocking-queue))

automatically generated reader method

Source

blocking-queue.lisp.

Target Slot

queue.


6.2.6 Structures

Structure: atomic-counter
Package

cl-muth.

Source

atomic.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: value
Type

cl-muth::atomic-fixnum

Initform

0

Readers

atomic-counter-value.

Writers

(setf atomic-counter-value).

Structure: blocking-timed-queue
Package

cl-muth.

Source

blocking-timed-queue.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: condivar
Initform

(bordeaux-threads:make-condition-variable :name "blocking-timed-queue")

Readers

blocking-timed-queue-condivar.

Writers

(setf blocking-timed-queue-condivar).

Slot: lock
Package

bordeaux-threads.

Initform

(bordeaux-threads:make-recursive-lock "blocking-timed-queue")

Readers

blocking-timed-queue-lock.

Writers

(setf blocking-timed-queue-lock).

Slot: heap
Initform

(bodge-heap:make-binary-heap :key (function car))

Readers

blocking-timed-queue-heap.

Writers

(setf blocking-timed-queue-heap).

Structure: priority-list
Package

cl-muth.

Source

blocking-queue.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: buckets
Readers

pl-buckets.

Writers

This slot is read-only.

Slot: length
Package

common-lisp.

Type

fixnum

Initform

0

Readers

pl-length.

Writers

(setf pl-length).

Structure: spin-lock
Package

cl-muth.

Source

spin-lock.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: owned
Readers

spin-lock-owned.

Writers

(setf spin-lock-owned).

Structure: thread-pool
Package

cl-muth.

Source

thread-pool.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: pool-size
Initform

1

Readers

tp-pool-size.

Writers

This slot is read-only.

Slot: lock
Package

bordeaux-threads.

Initform

(bordeaux-threads:make-lock "thread-pool-lock")

Readers

tp-lock.

Writers

This slot is read-only.

Slot: enabled-p
Readers

tp-enabled-p.

Writers

(setf tp-enabled-p).

Slot: workers
Readers

tp-workers.

Writers

(setf tp-workers).

Slot: blocking-queue
Readers

tp-blocking-queue.

Writers

(setf tp-blocking-queue).


6.2.7 Classes

Class: blocking-queue
Package

cl-muth.

Source

blocking-queue.lisp.

Direct methods

%queue-of.

Direct slots
Slot: lock
Package

bordeaux-threads.

Initform

(bordeaux-threads:make-recursive-lock "blocking-queue-lock")

Slot: interrupted-p
Slot: max-size
Initargs

:max-size

Slot: state-changed
Initform

(bordeaux-threads:make-condition-variable :name "blocking-queue-condition")

Slot: queue
Initform

(cl-muth::make-priority-list)

Readers

%queue-of.

Writers

This slot is read-only.

Class: guarded-reference
Package

cl-muth.

Source

guarded-reference.lisp.

Direct slots
Slot: lock
Package

bordeaux-threads.

Initform

(bordeaux-threads:make-recursive-lock "guard-ref-lock")

Slot: ref
Initargs

:reference

Class: scheduler
Package

cl-muth.

Source

scheduler.lisp.

Direct slots
Slot: enabled-p
Slot: queue
Initform

(cl-muth:make-blocking-timed-queue)

Slot: lock
Package

bordeaux-threads.

Initform

(bordeaux-threads:make-recursive-lock "scheduler-lock")

Class: simple-latch
Package

cl-muth.

Source

latch.lisp.

Direct slots
Slot: counter
Initform

1

Initargs

:count

Slot: state-changed
Initform

(bordeaux-threads:make-condition-variable :name "latch-state")

Slot: lock
Package

bordeaux-threads.

Initform

(bordeaux-threads:make-recursive-lock "latch-lock")


6.2.8 Types

Type: atomic-fixnum ()
Package

cl-muth.

Source

utils.lisp.

Type: blocking-queue-item-priority ()
Package

cl-muth.

Source

blocking-queue.lisp.


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   %   (  
A   B   C   D   F   G   I   M   O   P   R   S   T   U   W  
Index Entry  Section

%
%%make-atomic-counter: Private ordinary functions
%%make-spin-lock: Private ordinary functions
%acquire-spin-lock: Private ordinary functions
%blocking-timed-queue-peek-time: Private ordinary functions
%blocking-timed-queue-pop: Private ordinary functions
%compare-and-swap: Private macros
%decrement-counter: Private ordinary functions
%make-atomic-counter: Private ordinary functions
%make-priority-list: Private ordinary functions
%make-spin-lock: Private ordinary functions
%make-thread-pool-worker: Private ordinary functions
%pq-empty-p: Private ordinary functions
%pq-length: Private ordinary functions
%pq-less-or-same-priority-present: Private ordinary functions
%pq-pop: Private ordinary functions
%pq-pop-least-important: Private ordinary functions
%pq-push: Private ordinary functions
%queue-of: Private generic functions
%queue-of: Private generic functions
%release-spin-lock: Private ordinary functions
%reschedule-task: Private ordinary functions
%wait-interruptibly: Private ordinary functions

(
(setf atomic-counter-value): Private ordinary functions
(setf blocking-timed-queue-condivar): Private ordinary functions
(setf blocking-timed-queue-heap): Private ordinary functions
(setf blocking-timed-queue-lock): Private ordinary functions
(setf guarded-value-of): Public ordinary functions
(setf pl-length): Private ordinary functions
(setf spin-lock-owned): Private ordinary functions
(setf tp-blocking-queue): Private ordinary functions
(setf tp-enabled-p): Private ordinary functions
(setf tp-workers): Private ordinary functions

A
acquire-spin-lock: Public ordinary functions
atomic-counter-p: Private ordinary functions
atomic-counter-value: Private ordinary functions

B
blocking-timed-queue-condivar: Private ordinary functions
blocking-timed-queue-heap: Private ordinary functions
blocking-timed-queue-interrupt: Public ordinary functions
blocking-timed-queue-lock: Private ordinary functions
blocking-timed-queue-p: Private ordinary functions
blocking-timed-queue-pop: Public ordinary functions
blocking-timed-queue-push: Public ordinary functions

C
close-pool: Public ordinary functions
copy-atomic-counter: Private ordinary functions
copy-blocking-timed-queue: Private ordinary functions
copy-priority-list: Private ordinary functions
copy-spin-lock: Private ordinary functions
copy-thread-pool: Private ordinary functions
current-seconds: Private ordinary functions

D
decrement-atomic-counter: Public ordinary functions

F
Function, %%make-atomic-counter: Private ordinary functions
Function, %%make-spin-lock: Private ordinary functions
Function, %acquire-spin-lock: Private ordinary functions
Function, %blocking-timed-queue-peek-time: Private ordinary functions
Function, %blocking-timed-queue-pop: Private ordinary functions
Function, %decrement-counter: Private ordinary functions
Function, %make-atomic-counter: Private ordinary functions
Function, %make-priority-list: Private ordinary functions
Function, %make-spin-lock: Private ordinary functions
Function, %make-thread-pool-worker: Private ordinary functions
Function, %pq-empty-p: Private ordinary functions
Function, %pq-length: Private ordinary functions
Function, %pq-less-or-same-priority-present: Private ordinary functions
Function, %pq-pop: Private ordinary functions
Function, %pq-pop-least-important: Private ordinary functions
Function, %pq-push: Private ordinary functions
Function, %release-spin-lock: Private ordinary functions
Function, %reschedule-task: Private ordinary functions
Function, %wait-interruptibly: Private ordinary functions
Function, (setf atomic-counter-value): Private ordinary functions
Function, (setf blocking-timed-queue-condivar): Private ordinary functions
Function, (setf blocking-timed-queue-heap): Private ordinary functions
Function, (setf blocking-timed-queue-lock): Private ordinary functions
Function, (setf guarded-value-of): Public ordinary functions
Function, (setf pl-length): Private ordinary functions
Function, (setf spin-lock-owned): Private ordinary functions
Function, (setf tp-blocking-queue): Private ordinary functions
Function, (setf tp-enabled-p): Private ordinary functions
Function, (setf tp-workers): Private ordinary functions
Function, acquire-spin-lock: Public ordinary functions
Function, atomic-counter-p: Private ordinary functions
Function, atomic-counter-value: Private ordinary functions
Function, blocking-timed-queue-condivar: Private ordinary functions
Function, blocking-timed-queue-heap: Private ordinary functions
Function, blocking-timed-queue-interrupt: Public ordinary functions
Function, blocking-timed-queue-lock: Private ordinary functions
Function, blocking-timed-queue-p: Private ordinary functions
Function, blocking-timed-queue-pop: Public ordinary functions
Function, blocking-timed-queue-push: Public ordinary functions
Function, close-pool: Public ordinary functions
Function, copy-atomic-counter: Private ordinary functions
Function, copy-blocking-timed-queue: Private ordinary functions
Function, copy-priority-list: Private ordinary functions
Function, copy-spin-lock: Private ordinary functions
Function, copy-thread-pool: Private ordinary functions
Function, current-seconds: Private ordinary functions
Function, decrement-atomic-counter: Public ordinary functions
Function, guarded-value-of: Public ordinary functions
Function, interrupt: Public ordinary functions
Function, make-atomic-counter: Public ordinary functions
Function, make-blocking-queue: Public ordinary functions
Function, make-blocking-timed-queue: Public ordinary functions
Function, make-guarded-reference: Public ordinary functions
Function, make-latch: Public ordinary functions
Function, make-priority-list: Private ordinary functions
Function, make-scheduler: Public ordinary functions
Function, make-spin-lock: Public ordinary functions
Function, make-thread-pool: Public ordinary functions
Function, open-latch: Public ordinary functions
Function, open-pool: Public ordinary functions
Function, pl-buckets: Private ordinary functions
Function, pl-length: Private ordinary functions
Function, pool-alive-p: Public ordinary functions
Function, pop-from: Public ordinary functions
Function, priority->index: Private ordinary functions
Function, priority-list-empty-p: Private ordinary functions
Function, priority-list-length: Private ordinary functions
Function, priority-list-p: Private ordinary functions
Function, priority-list-peek-least-priority: Private ordinary functions
Function, priority-list-pop: Private ordinary functions
Function, priority-list-pop-least-important: Private ordinary functions
Function, priority-list-push: Private ordinary functions
Function, process-next-scheduler-event: Private ordinary functions
Function, push-to-pool: Public ordinary functions
Function, put-into: Public ordinary functions
Function, release-spin-lock: Public ordinary functions
Function, schedule: Public ordinary functions
Function, spin-lock-owned: Private ordinary functions
Function, spin-lock-p: Private ordinary functions
Function, start-scheduler: Public ordinary functions
Function, stop-scheduler: Public ordinary functions
Function, thread-pool-p: Private ordinary functions
Function, tp-blocking-queue: Private ordinary functions
Function, tp-enabled-p: Private ordinary functions
Function, tp-lock: Private ordinary functions
Function, tp-pool-size: Private ordinary functions
Function, tp-workers: Private ordinary functions
Function, try-put-into: Public ordinary functions
Function, try-put-replacing: Public ordinary functions
Function, unschedule: Public ordinary functions
Function, wait-for-latch: Public ordinary functions

G
Generic Function, %queue-of: Private generic functions
guarded-value-of: Public ordinary functions

I
interrupt: Public ordinary functions

M
Macro, %compare-and-swap: Private macros
Macro, wait-with-latch: Public macros
Macro, with-guarded-reference: Public macros
Macro, with-spin-lock-held: Public macros
Macro, within-pool: Public macros
make-atomic-counter: Public ordinary functions
make-blocking-queue: Public ordinary functions
make-blocking-timed-queue: Public ordinary functions
make-guarded-reference: Public ordinary functions
make-latch: Public ordinary functions
make-priority-list: Private ordinary functions
make-scheduler: Public ordinary functions
make-spin-lock: Public ordinary functions
make-thread-pool: Public ordinary functions
Method, %queue-of: Private generic functions

O
open-latch: Public ordinary functions
open-pool: Public ordinary functions

P
pl-buckets: Private ordinary functions
pl-length: Private ordinary functions
pool-alive-p: Public ordinary functions
pop-from: Public ordinary functions
priority->index: Private ordinary functions
priority-list-empty-p: Private ordinary functions
priority-list-length: Private ordinary functions
priority-list-p: Private ordinary functions
priority-list-peek-least-priority: Private ordinary functions
priority-list-pop: Private ordinary functions
priority-list-pop-least-important: Private ordinary functions
priority-list-push: Private ordinary functions
process-next-scheduler-event: Private ordinary functions
push-to-pool: Public ordinary functions
put-into: Public ordinary functions

R
release-spin-lock: Public ordinary functions

S
schedule: Public ordinary functions
spin-lock-owned: Private ordinary functions
spin-lock-p: Private ordinary functions
start-scheduler: Public ordinary functions
stop-scheduler: Public ordinary functions

T
thread-pool-p: Private ordinary functions
tp-blocking-queue: Private ordinary functions
tp-enabled-p: Private ordinary functions
tp-lock: Private ordinary functions
tp-pool-size: Private ordinary functions
tp-workers: Private ordinary functions
try-put-into: Public ordinary functions
try-put-replacing: Public ordinary functions

U
unschedule: Public ordinary functions

W
wait-for-latch: Public ordinary functions
wait-with-latch: Public macros
with-guarded-reference: Public macros
with-spin-lock-held: Public macros
within-pool: Public macros


A.3 Variables

Jump to:   *   +  
B   C   E   H   I   L   M   O   P   Q   R   S   V   W  
Index Entry  Section

*
*unscheduled-p*: Private special variables

+
+cas-sleep+: Private constants
+double-float-drift-time-correction+: Private constants
+iterations-until-wait+: Private constants

B
blocking-queue: Private structures
buckets: Private structures

C
condivar: Private structures
Constant, +cas-sleep+: Private constants
Constant, +double-float-drift-time-correction+: Private constants
Constant, +iterations-until-wait+: Private constants
counter: Private classes

E
enabled-p: Private structures
enabled-p: Private classes

H
heap: Private structures

I
interrupted-p: Private classes

L
length: Private structures
lock: Private structures
lock: Private structures
lock: Private classes
lock: Private classes
lock: Private classes
lock: Private classes

M
max-size: Private classes

O
owned: Private structures

P
pool-size: Private structures

Q
queue: Private classes
queue: Private classes

R
ref: Private classes

S
Slot, blocking-queue: Private structures
Slot, buckets: Private structures
Slot, condivar: Private structures
Slot, counter: Private classes
Slot, enabled-p: Private structures
Slot, enabled-p: Private classes
Slot, heap: Private structures
Slot, interrupted-p: Private classes
Slot, length: Private structures
Slot, lock: Private structures
Slot, lock: Private structures
Slot, lock: Private classes
Slot, lock: Private classes
Slot, lock: Private classes
Slot, lock: Private classes
Slot, max-size: Private classes
Slot, owned: Private structures
Slot, pool-size: Private structures
Slot, queue: Private classes
Slot, queue: Private classes
Slot, ref: Private classes
Slot, state-changed: Private classes
Slot, state-changed: Private classes
Slot, value: Private structures
Slot, workers: Private structures
Special Variable, *unscheduled-p*: Private special variables
state-changed: Private classes
state-changed: Private classes

V
value: Private structures

W
workers: Private structures


A.4 Data types

Jump to:   A   B   C   F   G   I   L   M   O   P   S   T   U  
Index Entry  Section

A
atomic-counter: Private structures
atomic-fixnum: Private types
atomic.lisp: The cl-muth/sbcl/atomic․lisp file
atomic.lisp: The cl-muth/ccl/atomic․lisp file
atomic.lisp: The cl-muth/other/atomic․lisp file
atomic.lisp: The cl-muth/atomic․lisp file

B
blocking-queue: Private classes
blocking-queue-item-priority: Private types
blocking-queue.lisp: The cl-muth/blocking-queue․lisp file
blocking-timed-queue: Private structures
blocking-timed-queue.lisp: The cl-muth/blocking-timed-queue․lisp file

C
ccl: The cl-muth/ccl module
cl-muth: The cl-muth system
cl-muth: The cl-muth package
cl-muth.asd: The cl-muth/cl-muth․asd file
Class, blocking-queue: Private classes
Class, guarded-reference: Private classes
Class, scheduler: Private classes
Class, simple-latch: Private classes
Condition, interrupted: Public conditions

F
File, atomic.lisp: The cl-muth/sbcl/atomic․lisp file
File, atomic.lisp: The cl-muth/ccl/atomic․lisp file
File, atomic.lisp: The cl-muth/other/atomic․lisp file
File, atomic.lisp: The cl-muth/atomic․lisp file
File, blocking-queue.lisp: The cl-muth/blocking-queue․lisp file
File, blocking-timed-queue.lisp: The cl-muth/blocking-timed-queue․lisp file
File, cl-muth.asd: The cl-muth/cl-muth․asd file
File, guarded-reference.lisp: The cl-muth/guarded-reference․lisp file
File, latch.lisp: The cl-muth/latch․lisp file
File, packages.lisp: The cl-muth/packages․lisp file
File, scheduler.lisp: The cl-muth/scheduler․lisp file
File, spin-lock.lisp: The cl-muth/sbcl/spin-lock․lisp file
File, spin-lock.lisp: The cl-muth/ccl/spin-lock․lisp file
File, spin-lock.lisp: The cl-muth/other/spin-lock․lisp file
File, spin-lock.lisp: The cl-muth/spin-lock․lisp file
File, thread-pool.lisp: The cl-muth/thread-pool․lisp file
File, utils.lisp: The cl-muth/utils․lisp file

G
guarded-reference: Private classes
guarded-reference.lisp: The cl-muth/guarded-reference․lisp file

I
interrupted: Public conditions

L
latch.lisp: The cl-muth/latch․lisp file

M
Module, ccl: The cl-muth/ccl module
Module, other: The cl-muth/other module
Module, sbcl: The cl-muth/sbcl module

O
other: The cl-muth/other module

P
Package, cl-muth: The cl-muth package
packages.lisp: The cl-muth/packages․lisp file
priority-list: Private structures

S
sbcl: The cl-muth/sbcl module
scheduler: Private classes
scheduler.lisp: The cl-muth/scheduler․lisp file
simple-latch: Private classes
spin-lock: Private structures
spin-lock.lisp: The cl-muth/sbcl/spin-lock․lisp file
spin-lock.lisp: The cl-muth/ccl/spin-lock․lisp file
spin-lock.lisp: The cl-muth/other/spin-lock․lisp file
spin-lock.lisp: The cl-muth/spin-lock․lisp file
Structure, atomic-counter: Private structures
Structure, blocking-timed-queue: Private structures
Structure, priority-list: Private structures
Structure, spin-lock: Private structures
Structure, thread-pool: Private structures
System, cl-muth: The cl-muth system

T
thread-pool: Private structures
thread-pool.lisp: The cl-muth/thread-pool․lisp file
Type, atomic-fixnum: Private types
Type, blocking-queue-item-priority: Private types

U
utils.lisp: The cl-muth/utils․lisp file