I et program er en coroutine en prosesseringsenhet som ligner på en rutine , bortsett fra at mens avslutningen av en rutine avsluttes rutinen, kan avslutningen av coroutine være resultatet av en suspensjon av behandlingen til den blir varslet om å gjenoppta behandlingen . Suspensjonen av coroutine og gjenopptakelsen av forløpet kan ledsages av dataoverføring.
Coroutines tillater behandling basert på kooperative algoritmer som iteratorer , generatorer , kommunikasjonskanaler , etc.
Ifølge Donald Knuth ble begrepet coroutine laget av Melvin Conway i 1958, mens han jobbet med å skrive et monteringsprogram . Senere foreslo Conway å organisere en kompilator i et sett med coroutines, som ga muligheten til å bruke forskjellige baner under feilsøking , og bruke en enkelt struktur i produksjonen.