Boost logo

Boost :

Subject: [boost] [context review] Review will end Mars 30st 2011
From: Vicente BOTET (vicente.botet_at_[hidden])
Date: 2011-03-27 09:44:23


Hi all,

The review of Oliver Kowalke Context library will end on Mars 30th.

There were a few interesting reviews with quite constructive comments. I encourage you to make a review so you can help improving the library and also help me to take the right decision ;-)

Please let me know if you needs more time so I can see if the review could be extended.

Vicente
Review Manager

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: http://tinyurl.com/5r77rel or

The documentation is available directly here: http://ok73.ok.funpic.de/boost/libs/context/doc/html/

---------------------------------------------------

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
topics:

- 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
problems?
- 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 list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk