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])