Boost logo

Boost Announcement :

Subject: [Boost-announce] [Boost-users] [context review] Review starts today, Mars 21st 2011
From: Vicente BOTET (vicente.botet_at_[hidden])
Date: 2011-03-20 20:18:18

Hi all,

The review of Oliver Kowalke Context library starts today Mars 21st 2011, and will end on Mars 30th.

Boost.Context is a basic building block library that is used for more higher abstractions. It is used by Boost.Fiber, Boost.Tasklet and Boost.Task from the same author.

I really hope to see your vote and your participation in the discussions on the Boost DEVELOPMENT mailing lists!
WARNING !!!!!!!!!!!!! Only on the Boost DEVELOPMENT mailing lists

Please use [context review] as prefix of your post to make easier the review follow up.

You can download a frozen version for the review from the Vault, TinyURL: or

The documentation is available directly here:


About the library:

Boost.Context provides a possibility to switch between different user-level context and is intended to be the basis for a higher abstraction like coroutine and fiber.

A user-level context represents the current execution state, including all registers and CPU flags, the instruction pointer, the stack pointer. boost::context encapsulates such a user-level context and is able to store/restore its associated user-level context. This allows multiple execution paths running on a single thread using a sort of cooperative scheduling (in contrast a thread is preemptively scheduled) - the running boost::context decides explicitly when its yields to allow another boost::context to run (user-level context switching). A context can only run on a single thread at any point in time but may be migrated between thread.

A context switch between threads costs usually thousands of CPU cycles on x86 compared to a user-level context switch with few hundreds of cycles.

Boost.Context differes to setjmp()/longjmp() in the fact that the C99 standard does not require that longjmp() preserves the current stack frame, e. g. jumping into a function which was exited via a call to longjmp() is undefined.

Boost.Context allows to select the mechanism provided by the operating system (ucontext on UNIX, Windows Fibers on Windows) or a faster implementation provided by this library (fcontext using assembler).


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?

Have a good review, Vicente
Review Manager
Boost-users mailing list

Boost-announce list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at