...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
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) and WinFiber.
As an alternative, ucontext_t
can be used by compiling with BOOST_USE_UCONTEXT
and b2 property context-impl=ucontext
.
ucontext_t might be available on a broader range of
POSIX-platforms but has some (for instance deprecated since POSIX.1-2003,
not C99 conform).
Note | |
---|---|
call/cc supports Segmented stacks only with ucontext_t as its implementation. |
With BOOST_USE_WINFIB
and
b2 property context-impl=winfib
Win32-Fibers are used as implementation for call/cc.
Because the TIB (thread information block) is not fully described in the MSDN, it might be possible that not all required TIB-parts are swapped.
Note | |
---|---|
The first call of call/cc converts the thread into
a Windows fiber by invoking |