Introduction to core.async
Long gone are the days when programs were required to do only one thing at a time. Being able to perform several tasks concurrently is at the core of the vast majority of modern business applications. This is where asynchronous programming comes in.
Asynchronous programming and, more generally, concurrency is about doing more with your hardware resources than you previously could. It means fetching data from the network or a database connection without having to wait for the result or, perhaps, reading an Excel spreadsheet into memory while the user can still operate the graphical interface. In general, it improves a system's responsiveness.
In this chapter, we will look at how different platforms handle this style of programming. More specifically, we will cover the following topics:
- An introduction to the background of core.async and its API
- Solidifying our understanding of core.async by re-implementing the stock market application in terms of its abstractions
- Understanding how core.async deals with error handling and backpressure
- A brief tour of transducers