q-thread-pool API Documentation
q-thread-pool
Simple thread pools based on concurrent queues.
Example Usage
Use make-thread-pool
to create a thread pool with 16 threads and a backlog of 32 and bind it to pool
.
Use enqueue-task
to enqueue 64 tasks for parallel evaluation by pool
. Note that the body forms of enqueue-task
is a lexical closure. The threads of pool
will work off the backlog concurrently. Once the backlog is full, e.g. when there are already 32 other tasks waiting, enqueue-task
will block until there is room in the queue.
When pool
is no longer needed, its threads should be destroy using destroy-thread-pool
in order to avoid leaking resources.
destroy-thread-pool (Function)
Syntax:
— Function: destroy-thread-pool thread-pool
Arguments and Values:
thread-pool—a thread pool.
Description:
destroy-thread-pool
destroys all threads allocated by thread-pool.
enqueue-task (Macro)
Syntax:
— Macro: enqueue-task thread-pool &body
forms
Arguments and Values:
thread-pool—a thread pool.
forms—forms.
Description:
enqueue-task
enqueues a lexical closure containing forms for evaluation by thread-pool. If the backlog of of thread-pool is full enqueue-task
will block until another task is dequeued.
make-thread-pool (Function)
Syntax:
— Function: make-thread-pool size backlog
Arguments and Values:
size, backlog—positive integers.
Description:
make-thread-pool
returns a thread pool. Size is the number of threads in the pool. Backlog is the number of tasks that will be queued before enqueue-task
blocks.