What's A Coroutine?
A coroutine is a synchronous thread – like a thread by without having to worry about synchronization issues.
Because coroutines are fully synchronous with their clients, there isn't the performance problem there is with threads. Coroutine switching can be implemented to run as fast as function calls and returns.