Pipelining for Parallelism - Two alternatives
Pipelines make a great way to exploit parallelism, and there are two great ways worth exploring to do exactly that.
Of course - both offer solutions for good scaling with multi-core processors, and both focus on fitting into C++.
Where they differ is how much they help with avoiding non-determinism in your parallel application.
One solution makes it your problem, and the other guarantees a deteministic program. As you might guess - to use the guaranteed method will require more learning of the techniques, and more investment of re-casting your program in new terms.
Is it worth it? Time will tell - both are available for trying - free of charge...
Intel Threading Building Blocks offers pipeline constructs for just this reason - and is available for free. TBB doesn't force you to make you program easy to debug - it makes that your problem. On the other hand, TBB makes doing pipelines in C++ with great scalability very easy - it slips into a C++ program without a great deal of learning necessary. It is easily one of the most popular features in TBB.
Whatif.intel.com offers Intel Concurrent Collections for C/C++ which embodies many of the concepts here - and is available to experiment with for free. CCC takes more effort to learn, but in exchange guarantees a deterministic program. It grows out of a research project formerly known as T-Streams (tagged streams), which is now very timely for multi-core processors.
TBB is a couple years old, and nearing one year as an open soruce project. CCC is a very new entrant - appearing on Whatif very recently.

