Boost logo

Boost :

From: Yigong Liu (yigongliu_at_[hidden])
Date: 2007-05-21 01:27:46

> What does it bring that Channel does not?


Here are a few more points to clarify the difference between Channel and

Channel's major purpose is to support asynchronous message passing thru
"name spaces". Message senders bind to "names" in name space to send and
receivers bind to "names" to receive. Name matching rules decide which
senders and receivers will bind together and communicate. We could use
linear / hierarchical / associative name spaces for different applications.

Join intends to be a rather complete implementation of Cw asynchronous
concurrency features. Its counterpart in C# is "Joins" library (

Channel's focus is to support transparent distributed message passing.
Senders bind to names to send while the receivers could be threads in
different processes or machines which bind to the same (matching) names to
receive. Both senders and receivers dont need to be aware whether their
communicating peers are local or remote.

Join more focus on giving a good treatment of "local" orchestration of both
async and synch concurrent activities. Join's primitives (async / synch
methods and chords) are more "fundamental", in that we could use them to
implement other concurrency idioms (such as semaphores, futures and active

In Channel, "join-pattern" is used as one of messaging coordination arbiters
(choice and join) of pull dispatcher, one of many dispatching algorithms
(including synchronous broadcast, round robin ...). It implements mostly the
asynchronous part of Cw (thru two phase commit), in the same style as CCR (

Compared with Channel, Join is a fairly small and simple library and header

For more information, please refer to


Boost list run by bdawes at, gregod at, cpdaniel at, john at