In this chapter, we'll discuss the most common concurrency design patterns, implemented with coroutines, and how coroutines can synchronize their execution.
Concurrent design patterns help us to manage many tasks at once. Yeah, I know, that's what we did in the last chapter. That's because some of those design patterns are already built into the language.
In this chapter, we'll briefly cover design patterns and other concurrent design patterns that you'll need to implement by yourself, with little effort.
We will be covering the following topics in this chapter:
- Active Object
- Deferred value
- Barrier
- Scheduler
- Pipelines
- Fan out
- Fan in
- Buffered channels
- Unbiased select
- Mutex
- Select on close
- Sidekick channel
- Deferred channel