Hacker Timesnew | past | comments | ask | show | jobs | submitlogin

Fibers and coroutines are different uses for the same thing. If you schedule your coroutines based on the kernel scheduler, they're fibers. If you jump between fibers explicitly, they're coroutines.


Using that definition, libmill is definitely coroutine-based. It does the scheduling itself.


I think it's mainly a fiber library, actually. The TCP and channel functions yield and resume automatically based on when the underlying operation blocks.

They have yield(), but I don't see the opposite, the ability to explicitly resume a stopped context.

Edit: for a "pure" coroutine library, I'd recommend libco from BSNES. It only has 4 functions: active, create, switch and delete. I wrote a fiber library using libco plus libuv, which was fairly easy.

https://web.archive.org/web/20140209005854/http://byuu.org/p... (unfortunately he still hasn't rebuilt his site)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: