Answer:
The term multitasking refers to the act of performing two (or more) tasks at the same time. In our present society this concept has a common place in the lives of the vast majority of people. Few jobs do not require, at some level, any form of multitasking. What's more, in a 100% connected society, the immediacy of interactions and access to information keeps our attention constantly shifting, and smartphones, added to social networks, are everyday tools that keep us constantly multitasking wherever we go. .
An important use of coroutines is the provision of a multitasking environment where multiple "tasks" (threads) can execute concurrently, sharing processor usage. Unlike a thread-based environment, which is typically preemptive (ie, tasks involuntarily lose control of the processor at any time of their execution), a coroutine-based environment is basically cooperative, meaning that tasks voluntarily relinquish the processor control.
The cooperative multitasking style has the advantage that breakpoints are well-defined because you know exactly when control moves from task to task. So there is not that big bottleneck that we saw with context switching, where all registers need to be saved, among others. A more elegant, efficient and green solution.
Explanation: