Co-routine
In computer science, the co-routine is a kind of subroutine with more abstraction of control flows. Languages that support it include Simula and Modula-2. It is uncommon in practical computer programming.