Boost.Fiber provides a framework for micro-/userland-threads
(fibers) scheduled cooperatively. The API contains classes and functions to
manage and synchronize fibers similar to Boost.Thread. Each fiber has its own stack.
A fiber can save the current execution state, including all registers and CPU
flags, the instruction pointer, and the stack pointer and later restore this
state. The idea is to have multiple execution paths running on a single thread
using a sort of cooperative scheduling (versus threads, which are preemptively
scheduled). The running fiber decides explicitly when it should yield to allow
another fiber to run (context switching). Boost.Fiber
internally uses coroutines from Boost.Coroutine;
the classes in this library manage, schedule and, when needed, synchronize
those coroutines. A context switch between threads usually costs thousands
of CPU cycles on x86, compared to a fiber switch with a few hundred cycles.
A fiber can only run on a single thread at any point in time.
Naturally, you need not wait until the review formally opens to start reviewing the Fiber library. Please always state in your review whether you think the library should be
accepted as a Boost library!
Additionally please consider giving feedback on the following general
- What is your evaluation of the design?
- What is your evaluation of the implementation?
- What is your evaluation of the documentation?
- What is your evaluation of the potential usefulness of the library?
- Did you try to use the library? With what compiler? Did you have any
- How much effort did you put into your evaluation? A glance? A quick
reading? In-depth study?
- Are you knowledgeable about the problem domain?