
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