In this chapter, we will cover the following recipes:
- ThreadPools—running tasks concurrently through a pool of threads
- Coroutines—interleaving the execution of code through coroutines
- Processes—dispatching work to multiple subprocesses
- Futures—futures represent a task that will complete in the future
- Scheduled tasks—setting a task to run at a given time, or every few seconds
- Sharing data between processes—managing variables that are accessible across multiple processes