From: Yigong Liu (yigongliu_at_[hidden])
Date: 2006-03-01 02:19:57
> I have a great interest is this kind of use, but in a threaded
> environment. I've developed my own event-driven infrastructure
> but it's not designed to be super general-purpose. However, I
> am interest in actively participating in discussions around your
> proposal wrt this kind of use.
> Specifically, my needs for event-driven programming arise from
> designing machine simulators, which have slightly different
> requirements than a GUI system (tracking simulator time, for
> example). A policy-based design works well and is what I've
> designed for my own use.
> Thanks for the comments. what is the threading requirement in your
application? Channel is a light-weight core for general purpose pub/sub
message passing and the most common use case is multiple threads
publish/send messages/events and multiple threads subscribe/receive
messages/events. Its internal data structures are protected by RW_Mutex
which is defined as sub-type of SynchPolicy (borrowed from ACE). For
multi-threaded application, Channel template is specialized with SynchPoly =
MT_Policy. For special single threaded cases (such as some systems designed
with eventlib and X-window/Xlib/Xt, only single main thread detects external
events and dispatch events), Channel template can be specialized with
SynchPolicy = NULL_Policy whose sub-types are "no-ops" removing synch
Another important design aspect is its "namespace" concept (borrowed from
plan9/inferno). Channel's namespace is all the message/event ids published /
subscribed by its members. The namespace can be linear, hierachical, and
associative based on routing algorithms (and all these are easily changed
when specializing Channel template for a particular application by different
template arguments). When 2 channels are connected thru "connectors", their
namespaces are "merged" to facilitate transparent distributed message
passing and event dispatching. This "merge" operation can be controlled by
defining filters and translators.
Sorry for all these murmruing, the project website:
http://channel.sourceforge.net/ provides more details.
I am studying existing boost libraries for system programming (Thread,
Shmem, Asio and Serialization). Is there any libraries i missed?
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk