|
Boost Users : |
Subject: [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: 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-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net