Channeling the Inner Complexity
summary
Compares Scala concurrency options and claims any scalable program needs a good model, then shows a library-only implementation called Eskow that emulates Go-style goroutines and channels using Scala futures, promises and scala-async macros. Implements channels and go coroutines, nonblocking put/take returning futures, a select primitive, optional buffering and execution-context scheduling. Proof-of-concept compiles and tests pass locally, runtime behavior matches CSP semantics but performance versus Go is unknown, repo is not yet public and work remains on closing channels, error handling, buffer policies and API refinements.
AI-written summary · about
chapters (23)
- 0:00Introduction and poll
- 1:07Parallelism vs concurrency
- 2:32Limitations of threads
- 3:57Meme example and waste
- 4:58Multi-threading and synchronization
- 6:23Queues for decoupling
- 7:25Callbacks and event loops
- 9:19Advantages of callbacks
- 10:00Callback hell and complexity
- 10:21Scala futures introduction
- 11:44Promises and futures
- 13:10Execution contexts and scheduling
- 14:33Shortcomings of futures
- 16:23Scala async for composition
- 18:31Futures for recurrent events
- 18:53Introducing Eskow library
- 20:37Eskow channels and go routines
- 22:21Eskow project status
- 24:13Roadmap and future features
- 25:58Summary and advantages
- 26:40Comparison with actors and CSP
- 28:26Choosing the right concurrency model
- 29:07Closing remarks and Q&A
related talks
42mOXES, TAPIRS AND STTPS
44mConcurrency in Scala and on the JVM
48mAsynchronous streams in direct style with and without macros
23mHow Functional is Direct-Style?
45mSimplifying Asynchronous Code With Scala Async
40mRetrofitting Concurrency – Lessons from the Engine Room
43mThe Design of the Scalaz 8 Effect System
44mCAN WE FREE CONCURRENT PROGRAMMING FROM THE MONADIC STYLE
