
Stjepan Rajko wrote:
The direction indicated by >>= aligns with the direction of the signal (function call), but the data can flow in either way (either sent forward in the function call argument, or sent back through through the return value). So, you could do
rng >>= funcA >>= funcB
or
funcB >>= funcA >>= rng
depending on how the func and rng components are implemented.
That seems a bit odd; this is a DATA-flow library, so I would expect the direction of the symbol to describe the direction of the data flow. And isn't the data passing method a detail of the implementation (in this case Signals) that your Generic layer should be hiding? But I'm not sure I understand you; here rng is a data source and (surely) it supplies values via its return value; how can it be implemented to supply values via a parameter?
As far as the dataflow library goes, some sort of a "automatic task division" library would indeed be great in conjunction with dataflow, but I see this as orthogonal to dataflow.
It doesn't have to be _automatic_ (i.e. runtime) task division; just some way of running some components in their own threads. The thread-safe-signals work that you linked to before may be sufficient for this, though I don't know enough about Boost.Signals to fully understand it. Phil.