我刚刚遇到了提议的Boost::Dataflow库。这似乎是一种有趣的方法,我想知道是否还有其他类似的 C++ 替代框架,以及是否有任何相关的设计模式。我没有排除 Boost::Dataflow,我只是在寻找任何可用的替代方案,以便更好地了解域和我的选择(或者在必要时自行选择)。
11 回答
查看Intel Threading Building Blocks,特别是它的tbb::flow
命名空间。
只是为了记录,您还可以考虑gstreamermm ,它是gstreamer的 C++ 包装器。
数据流编程是潜伏了数十年但从未完全起飞的东西之一……无论如何,对于软件来说;在 VHDL/Verilog 世界中,您会发现自己更容易自然地采用数据流思维方式。但是在软件世界中……不知何故,它似乎永远不会扩展到玩具系统之外,也许是因为人们坚持将它与可视化编程结合在一起(我看到 boost 数据流也走这条路)。有些人希望通过数据流编程来解决软件危机,使其更像具有可插拔组件和可互连引脚的硬件设计......但是坚持下去,硬件设计也真的很难!(有趣的是,虽然在硬件世界中确实存在可视化编程系统,但实际上没有人用它们来建造任何大的东西)。
我所知道的使用数据流原理的最有趣、最活跃的现代示例是PureData视听编程环境。
您可以在这里查看我的数据流实现:http: //ambient.comp-phys.org
它支持 MPI 和线程,并基于通过运行时对象版本控制系统工作的自定义数据流类型(即环境::向量)。
Visual Studio 并发运行时包含 C++ 中的异步数据流框架。
图像处理数据流示例:http: //msdn.microsoft.com/en-us/library/ff398050.aspx
也许 Pure Data (pd) 有一个 C++ API ......
如果您的领域是声音生成/处理,请使用http://www.synthedit.com/
它看起来很有希望,我在 SDK 文档(复音)中找到了一个很好的解决方案。有趣,但他们没有提到dataflow这个词。