Skip to content

Concurrent Programming with Clojure

Stuart Halloway edited this page Nov 17, 2013 · 3 revisions


Clojure's immutable, persistent data structures encourage side-effect free programming that can easily scales across multiple processor cores. In this talk, we will explore the various features Clojure provides for dealing with concurrency:

  • Atoms provide for synchronous, uncoordinated updates
  • Agents provide a thread-safe mechanism for asynchronous, uncoordinated updates
  • Futures are a convenient mechanism for execution on a separate thread
  • Delays provide a way to defer work for one-time execution when needed
  • Promises provide one-time delivery as a mechanism for coordination
  • Software Transactional Memory (STM) provides a mechanism for managing references and updates across threads.
  • Dynamic Vars support thread-local state.

On the Web

You can’t perform that action at this time.