Clojure core.async
summary
A Clojure library implements CSP-style channels so independent logical threads communicate via queue-like endpoints rather than tangled callbacks, with a go macro that turns blocking operations into parked continuations so JVM threads or a shared thread pool can be used and the same API runs in ClojureScript. It provides alts/select for waiting on multiple operations, timeout channels as first-class timers, fixed or dropping/sliding buffers (no unbounded buffers), async put/take bridges for callback interop, and it works as advertised.
AI-written summary · about
chapters (20)
- 0:00Intro
- 0:20Problems
- 1:09Premise
- 2:47Thread overheads
- 4:32Events/Callbacks
- 6:57Call Chains as Machines
- 8:14C# Style Async
- 9:20Copying C# Async
- 12:49Queues/channels!
- 13:58CSP
- 16:41The Challenge
- 18:24core.async
- 19:28Threads and Blocking
- 21:08Channel API
- 22:14Buffers
- 27:14Timeouts
- 28:28Like Go, but...
- 31:09The Final Frontier
- 40:54Code
- 43:22What You Get
related talks
33mCommunicating with channels
46mTaming the Asynchronous Beast with CSP Channels in JavaScript
25mFunctional effect and streaming systems in Clojure
48mAsynchronous streams in direct style with and without macros
38mConcurrency doesn,t have to be hard: Kotlin Coroutines and Channels
38mAccidentally Concurrent
50mThinkAsync in Java8
30mParadigms for dealing with asynchrony
