Coroutine vs Fiber difference clarification

kasyauqi picture kasyauqi · Mar 23, 2017 · Viewed 7.1k times · Source

In the book Linux System Programming, 2nd Edition, the difference between coroutines and fiber is explained as follows:

Coroutines and fibers provide a unit of execution even lighter in weight than the thread (with the former being their name when they are a programming language construct, and the latter when they are a system construct).

I have some example of Coroutines (language constructs) but unable to find the example of Fibers.

Can anyone provide me some example of Fiber (a system construct)?

Answer

xlrg picture xlrg · Jun 15, 2017

You could take a look at boost.coroutine2 and boost.fiber (C++ libraries) - both use the same context switching mechanism (callcc()/continuation) from boost.context.

In short - the difference between coroutines and fibers is, that the context switch between fibers is managed by a scheduler (selects the next fiber ...). Coroutines don't have a concept of a scheduler.

A more detailed explanation of the difference between coroutines and fibers can be read in N4024: Distinguishing coroutines and fibers.