Chapter 7: Controlling the Data Flow
The previous chapter covered an important Kotlin concurrency primitive: coroutines. In this chapter, we'll discuss two other vital concurrent primitives in Kotlin: channels and flows. We'll also touch on higher-order functions for collections, as their API is very similar to that of channels and flows.
The idea of making extensive use of small, reusable, and composable functions comes directly from the functional programming paradigm, which we discussed in the previous chapter. These functions allow us to write code in a manner that describes what we want to do instead of how we want to do it.
In this chapter, we'll cover the following topics:
- Reactive principles
- Higher-order functions for collections
- Concurrent data structures
- Sequences
- Channels
- Flows
After reading this chapter, you'll be able to efficiently communicate between different coroutines and process your data with ease.
...