什么是数据流并发的一个很好的激励示例?

时间:2010-05-30 06:42:28

标签: concurrency dataflow

我理解数据流编程的基础知识并且在Groovy中的Clojure APIstalks from Jonas BonerGPars中遇到了一些问题。我知道它在像Io这样的语言中很流行(尽管我没研究过Io)。

我缺少的是在构建并发程序时将数据流视为范例的令人信服的理由。为什么我会使用数据流模型而不是可变状态+线程+锁模型(在Java,C ++等中常见)或者演员模型(在Erlang或Scala中常见)或其他什么东西?

特别是,虽然我知道上述语言(以及Scala和Ruby)中的库支持,但我不知道单个程序或库是该模型的海报子用户。谁在使用它?为什么他们发现它比我提到的其他型号更好?

4 个答案:

答案 0 :(得分:3)

我也有一个错误的例子。它没有实现干净的actor模型,也没有并发问题,但它使用DF架构,并且极端受欢迎:任何电子表格软件(例如MS Excel)。

修改单元格时,它会向引用它的单元格发送“重新计算”信号。尽管如此,当您使用更大更大的工作表时,您可以感受到数据流编程的真正品味 - 工作的重点将会改变:

  • 公式创建失去了它的初始重要性(你会发现自己只是克隆相同的3-4公式),
  • 布局变得更加重要:重新组织引用,将长公式拆分为较短公式,隐藏参数,最后根据数据形成图表。

如果我们意识到,公式是组件,引用是消息,我们就会得到通常的数据流编程方式:首先,我们创建一些组件,然后我们用它们构建数据流图。如果组件太大,我们将它们分成较小的组件。最后,我们选择了一个可视化组件来进行一个令人眼花缭乱的结果演示。

答案 1 :(得分:2)

我有一个很好的“海报孩子”(我喜欢这个词)。我想,你以前从未见过它,但你可能已经听过了。

我认为,几乎所有现代数字合成器和采样器都内部都有某种数据流架构。让我告诉你它们是如何工作的。

我不确定 Roland JV-1080 是否是第一个,但它是最着名的4层声音发生器方案的合成器。当您按下键盘上的某个键时,将启动一个Patch。它由1..4声音发生器组成。声音发生器是一系列组件:振荡器,滤波器,包络,放大器。 JV-1080一次可以播放64个声音发生器。有源声音发生器的输出进入效果配置。声音发生器路径是“硬连线”,您可以选择效果总线的入口点和数量。

Roland JV-1080的效果总线有4个入口点:干,自定义效果,合唱,混响,还有主要输出。效果总线是固定的,但是所有效果的输出都连接到所有其他效果,这些效果最靠近它,因此您可以通过将数量设置为零来“删除它们之间的连接”。

Alesis QS 系列(QuadraSynth,QS6-7-8-R和x.1版本)附近有一些声音架构,效果系统类似......除了你可以选择一个来自3 FX配置。一个FX配置用于器官(QS有令人难以置信的Leslie仿真):Leslie,Choir,Reverb;另一个FX配置有两个混响。你可以更自由地使用齿轮的马力。

这些合成器很棒,但是当你遇到 Clavia Nord Modular 时,你会忘记它们。它没有4层架构,也没有FX配置。它带有一个win32程序,一个数据流编辑器。有各种组件:振荡器,滤波器,包络发生器等,您可以绘制您的配置。你应该绘制一个传统的4层声音发生器,但如果你愿意,你甚至可以绘制一个99层的声音发生器。它只是摇滚。 (不得不说,DF不是一切:Roland JV有44.1 kHz样本频率,QS有48k,模块有96k。)

Clavia有他们的合成器:Nord Lead。里面有Modular的引擎(参数和声音是一样的),但你不能将数据流程序员用于那些模型。它们有固定的路径,有很多参数,但你不能改变路线。此外,还有针对Modular的Nord Lead补丁集:所有路径在编辑器中看起来都相同,只有参数变化。

这是模块化补丁示例http://www.clavia.se/pictures/nordmodular/patchwindowlarge.jpg

如果您对合成器示例不满意,比如说,因为您是C程序员,这是另一个更熟悉的:

make -j

令我惊讶的是,make是一个数据流系统,因此它可以同时运行“组件”,这意味着可以更快地在多核计算机上进行编译。试试吧!

答案 2 :(得分:0)

如果你考虑一下,关系数据库就是典型的孩子。考虑任何评估计划,其中每个运营商处理来自其他运营商/表的行流,并生成馈送到其他运营商的流。

网上被盗的随机图片: alt text http://mathcs.slu.edu/~goldwasser/courses/slu/csa341/2003_Fall/lectures/oracle_optimizer/T3_treeB.gif

答案 3 :(得分:0)

检查出来:http://www.synthedit.com/

这是VSTi的音频相关框​​架和组件集。我不知道它是如何完全的,但看起来作者用自己的一组标准组件发布软件,然后其他人可以通过编译DLL来附加它们。

另外,我刚刚抓到附近的一个人,我们在同一个邮件列表上,创建了一个漂亮的TB303模拟器(着名的模拟复古合成器),并且他使用SynthEdit作为框架创建了它。因此,如图所示,它可以用作框架,没有技术(也没有bizmodel)的难度。

所以,值得一看,我发现通过文档浏览的实施实践很棒。尽管如此,该网站不包含 dataflow 这个词,并且应该更好地编辑文档,项目的精神是可以的。还有一些“第三方”组件开发人员。它有很好的GUI前端,至少。