Multithreading and coroutines are different concepts though in practice they may end up being the same thing.
Coroutines were invented surprisingly enough, for lexing and parsing[0].
[0] http://melconway.com/Home/pdf/compiler.pdf
Edit1: added source. I'm surprised Melvin Conway is still alive