...one of the most highly
regarded and expertly designed C++ library projects in the
world. — Herb Sutter and Andrei
The implementation uses fcontext_t per default. fcontext_t is based on assembler and not available for all platforms. It provides a much better performance than ucontext_t (the context switch takes two magnitudes of order less CPU cycles; see section performance) and WinFiber.
Because the TIB (thread information block on Windows) is not fully described in the MSDN, it might be possible that not all required TIB-parts are swapped. Using WinFiber implementation migh be an alternative.
As an alternative, ucontext_t
can be used by compiling with
and b2 property
ucontext_t might be available on a broader range of
POSIX-platforms but has some disadvantages
(for instance deprecated since POSIX.1-2003, not C99 conform).
callcc() supports Segmented stacks only with ucontext_t as its implementation.
Win32-Fibers are used as implementation for callcc().
The first call of callcc()
converts the thread into a Windows fiber by invoking