Fork-join in a simple Common Lisp library, for fork-join style concurrency.
It allows one to aggregate concurrent computations ('tines') into groups ('forks') that can be manipulated as a whole. The simplest usage is
(FORK
(FOO)
(BAR X)
(BAZ))
that runs (FOO)
, (BAR X)
and (BAZ)
concurrently and waits until all of them complete.
You can also bind variables concurrently:
(FORK-LET
((X (FOO))
(Y (BAR X))
L ; Bound to nil.
(Z (BAZ ... L ...)))
(PROCESS X Y Z))