Concurrency Across Lisps
Immutable data + atoms, refs (STM), agents, futures, core.async (CSP), virtual threads (Java 21+)
(swap! a inc), (dosync (alter r + 1)), (go (>! c x)) Common Lisp
OS threads via bordeaux-threads, locks, condition variables; lparallel (task parallelism, futures, pmap); chanl (channels)
(bt:make-thread (lambda () ...)), (lparallel:pmap 'list #'f xs)
Green threads, futures (parallel, limited), places (parallel, message passing), channels, events (CML-style)
(thread (λ ()...)), (future (λ ()...)) Guile / Chez Native threads (Guile: fibers library for CSP) (call-with-new-thread thunk) Emacs Lisp
Cooperative threads (Emacs 26+), async processes, timers (make-thread #'f), (make-process...)
Erlang actors (processes, mailboxes, OTP supervisors) (spawn (lambda ()...))
;; Parallel map and futures in Clojure
(pmap expensive-fn (range 100))
(let [a (future (fetch-a)) b (future (fetch-b))] [@a @b])