|
Boost : |
From: Yigong Liu (yigongliu_at_[hidden])
Date: 2007-05-20 21:45:16
> What does it bring that Channel does not?
>
> Hello,
Yes, both Channel and Join are asynchronous messaging oriented. I have been
working on restructuring/rewriting the internal of Channel, this is a
offshoot from that work. In Channel, the join-pattern is implemented as two
phase commit the same way as CCR did it. During the rewriting, for a
comparison of simplicity and expressiveness, i really like to have a Join
implementation in the original Cw (or Jocaml) style and here is the result.
Internally the join-patterns are represented as bitmasks, many optimizations
mentioned in Cw paper and implemented by Cw compiler (
http://research.microsoft.com/Comega/) are implemented by some template
techniques.
After using it to recode over a dozen Cw tutorial samples, i found it quite
usable by itself and so i packaged it up and released it separately. In
today's multicore world, people need high level tools for the orchestration
of asynchronous and synchronous concurrent activities (besides distributed
messaging and low level threads and synchronization), as evidenced by
Microsoft continuous efforts on Join calculus (Cw, CCR(Coordination and
Cocurrency Runtime), C# Joins lib) and Intel 's Threading Build Block
library. Hope this small lib can be some help to our community.
Also the API is "functional" oriented (we are talking about async / synch
"methods') which may be attractive to people who dont like the explicit
message passing API (send/recv) of Channel.
With different API and different internal implementation, hope Channel and
Join can find their applications.
Thanks
Yigong
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk