Coroutines are computer program components that generalize subroutines to allow multiple entry points for suspending and resuming execution at certain locations. Coroutines are well-suited for implementing more familiar program components such as cooperative tasks, iterators, infinite lists and pipes.

The term coroutine was originated by Melvin Conway in a 1963 paper.

Read more about Coroutine:  Comparison With Subroutines, Comparison With Generators, Common Uses, Programming Languages With Native Support, Alternatives and Implementations

Other articles related to "coroutine":

Coroutine - Alternatives and Implementations - Implementations in Assembly Languages
... assembly languages often provide direct methods for coroutine execution ... the assembly language of the PDP-11 family of minicomputers, the “classic” coroutine switch is effected by the instruction "JSR PC,@(SP)+", which jumps to the address popped ...