In Chapter 14, Coroutines, we introduced Kotlin's support for coroutines and described what they were and how they can be used. In this chapter, we will continue with this theme and discuss the real-world application of coroutines and the exciting libraries and APIs that are built on top of them.
In this chapter, we will cover the following topics:
- Channels
- select expression
- Debugging with coroutines
- Interoperability with blocking code