
Am 29.07.2010 06:55, schrieb Yigong Liu:
I'd very much like (see someone else) implementing CSP like channel/light-weight-process on top of it.
I've implemented boost.fiber on top of boost.context - it aims to be a light-weight-process (with scheduling etc.). boost.fiber provides some channels too which can be used to exchange data between fibers even if they are running in different threads (fiber blocks/yields if it is waiting on a channel and gets resumed -> special mutex and condition vairables). I don't know if the channels of boost.fiber conform to CSP.
My recent experience with google's Go language give quite positive impression of that model.
I try to provide similiar functionality to C++.
Have you had a look of Russ Cox's libtask (http://swtch.com/libtask/)? which also provide a context wrapper (on *nix platforms).
I didn't knew libtask - seams similiar implementation is C (despite the fact of differences in assembler).
For the windows platform, now we have user-mode-scheduling (UMS) feature in Windows7 and WindowsServer2008R2, which kind of fixed many issues of fibers. Could it be a fallback for your interface?
Unfortunately XP is still my developing platform (have no access to Windows7 etc.). Maybe it could be a fallback. Oliver