- Coroutines are lightweight cooperative concurrent mechanisms.
- They have the ability to pause and resume a function without blocking the thread.
- Blocking a thread is memory-intensive.
- Context switching between threads is expensive.
- During I/O operations, a thread remains idle while waiting for a response.