nc event-loop) provides
asynchronous procedures which can wait on the completion of a task
running in a worker thread or on an event loop running in another
thread.  However, sometimes it is better to run tasks in a thread pool
rather than launching worker threads, particularly where the workload
suits having the number of threads in the thread pool approximating to
the number of local processors available to the program.  (In guile,
the number of processors so available can be obtained using the
current-pr