关于c ++:数据流编程-模式和框架

关于c ++:数据流编程-模式和框架

Dataflow Programming - Patterns and Frameworks

我刚刚遇到了建议的Boost :: Dataflow库。
看来这是一种有趣的方法,我想知道是否还有其他此类C ++替代框架,以及是否有任何相关的设计模式。
我并没有排除Boost :: Dataflow的问题,我只是在寻找任何可用的替代方法,这样我就可以更好地理解域和我的选择(或者在必要时滚动我自己的选择)。


维基百科

Wikipedia中有很多关于数据流编程理论的好文章:

  • 数据流
  • 数据流编程
  • 基于流程的编程
  • 演员模型
  • 可视化编程

这些文章由不同的作者撰写,因此存在一些重叠之处,并且缺少一些重要的内容,但这是一个很好的起点。

TinyOS的

这是一个基于数据流原理的开源操作系统。我对此感到不好:他们甚至没有提到"数据流"一词。就是这样,也许值得研究。


您还可以查看ROS和Orocos这两个主要的开放源代码机器人框架。还有Rock,但它是基于Orocos的,因此,如果您正在寻找C ++组件框架,则等效。


查看英特尔线程构建模块,特别是其tbb::flow名称空间。


我发现了一些数据流C ++库:

  • cellspp-允许使用电子表格评估模型。
  • DSPatch和Route11-C ++数据流框架。允许以数据流方式编写程序。看起来很有趣。

仅作记录,您还可以考虑gstreamermm,它是gstreamer的C ++包装器。


如果您想将此设计用于图像处理或可视化,则可以在itk中找到良好的资源。而且,如果您想要此(数据/工作)流的GUI,则可以使用devide。
我的2美分
约翰


您可以在此处检查我对数据流的实现:http://ambient.comp-phys.org

它支持MPI和线程处理,并基于通过运行时对象版本控制系统工作的自定义数据流类型(即环境::矢量)。


Visual Studio并发运行时包含C ++中的异步数据流框架。

图像处理数据流的示例:http://msdn.microsoft.com/zh-cn/library/ff398050.aspx


也许Pure Data(pd)具有C ++ API ...

http://en.wikipedia.org/wiki/Pure_Data


数据流编程是潜伏了数十年的事情之一,但对于软件来说却从未真正起飞。在VHDL / Verilog世界中,您会发现自己自然更容易采用数据流思维方式。但是在软件世界中……某种程度上它似乎从未扩展到玩具系统之外,这可能是因为人们坚持将其与可视化程序捆绑在一起(而且我看到boost数据流也走了这条路)。有些人希望通过数据流编程来解决软件危机,方法是使它更像是具有可互连组件的可插拔组件的硬件设计……但是,坚持下去,硬件设计也确实很困难! (有趣的是,尽管在硬件世界中确实存在可视化编程系统,但实际上没有人使用它们来构建大型的东西)。

我知道使用数据流原理的最有趣,最活跃的现代示例是PureData视听编程环境。


如果您所在的区域是声音的产生/处理,请使用http://www.synthedit.com/

看起来很有希望,我已经在SDK文档(polyphony)中找到了解决深层问题的好答案。有趣,但是他们没有提到数据流这个词。


推荐阅读