You should always consider using threads instead; especially in modern hardware. If you have work that can be logically separated in Co-routines, using threads means the work might actually be done concurrently, by separate execution units (processor cores).
But, maybe you do want to use coroutines, perhaps because you have an well tested algorithm that has already been written and tested that way, or because you are porting code written that way.
If you work within Windows, you should take a look at fibers. Fibers will give you a coroutine-like framework with support from the OS.
I am not familiar with other OS's to recommend alternatives there.