core.async: Concurrency without Callbacks
summary
core.async implements CSP-style channels to decouple producers and consumers across JVM and browsers, offering unbuffered and buffered channels, blocking thread ops vs go blocks park instead of block, and channel ops put/take plus alts!/alts!! for waiting on many operations. examples show DOM events funneled to channels, merge/split/mult for dynamic routing, timeouts as channels, and small composable processes (go or real threads) assembled into real UIs (pixel editor, card game) that run and garbage-collect stuck go blocks.
AI-written summary · about
chapters (12)
- 0:00The problem with state
- 3:53CSP as a solution
- 7:06Advanced channel concepts
- 12:44Clojure syntax basics
- 17:56Browser event examples
- 25:37Multiplexing techniques
- 28:31Working with alternatives
- 34:40Search with timeouts
- 38:36Architecture and state
- 45:28Comparing CSP and actors
- 51:24Real-world applications
- 54:16Q&A and conclusion
related talks
40mCore.Async
34mCore.Async in Use
44mClojure core.async Evolution
35mApplying the paradigms of core.async in ClojureScript
34mComparing the Actor model & CSP concurrency with Elixir & Clojure
47mChannels - An alternative to callbacks and futures
39mLet's talk concurrency
44mConcurrent Affairs: Procedural Programming Unlocked
