Coroutines are a general control structure whereby flow control is cooperatively passed between two different routines without returning.