代码之家  ›  专栏  ›  技术社区  ›  Alex Miller

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

  •  3
  • Alex Miller  · 技术社区  · 16 年前

    我了解数据流编程的基本知识,并在 Clojure APIs , talks from Jonas Boner , GPars 在groovy等语言中,我知道它在IO等语言中很普遍(尽管我没有学习过IO)。

    我所缺少的是一个令人信服的理由,在构建并发程序时,将数据流作为一个范例来关注。为什么我要使用一个数据流模型而不是一个可变状态+线程+锁模型(爪哇、C++等常见的)或者一个参与者模型(Erlang或Scala中常见的)或其他什么?

    特别是,虽然我知道上面的语言(scala和ruby)支持库,但我不知道有哪个程序或库是这个模型的海报子用户。谁在使用它?为什么他们发现它比我提到的其他型号更好?

    4 回复  |  直到 15 年前
        1
  •  3
  •   ern0    16 年前

    我也有一个错误的例子。它没有实现一个干净的参与者模型,并且没有并发问题,但是它使用了df架构,并且 极端地 流行:任何电子表格软件(如MS Excel)。

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

    • 创建的公式会降低其最初的重要性(您会发现自己只是克隆了相同的3-4个公式)。
    • 布局变得更加重要:重新组织引用,将长公式拆分为短公式,隐藏参数,最后从数据中形成一个图表。

    如果我们意识到公式是组件,引用是消息,我们就得到了数据流编程的一般方法:首先,我们创建一些组件,然后用它们构建一个数据流图。如果组件太大,我们将它们拆分为较小的组件。最后,我们选择一个可视化组件来进行一个“眼糖”结果演示。

        2
  •  2
  •   ern0    16 年前

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

    我认为,几乎所有的现代数字语法器和取样器都有某种内部数据流架构。我来告诉你他们是怎么工作的。

    我不确定是否 罗兰JV-1080 是第一个,但它是最著名的4层声音发生器方案合成器。当你按下键盘上的一个键时,一个补丁就开始了。它由1.4个声音发生器组成。声音发生器是一系列部件:振荡器、滤波器、包络线、放大器。JV-1080一次可以播放64个声音发生器。有源发声器的输出进入效果配置。声音发生器路径是“硬接线”,您可以选择效果总线的入口点和数量。

    罗兰合资公司-1080的效果巴士有4个入口点:干,定制效果,合唱团,混响,并有主要输出。效果总线是固定的,但所有效果的输出都连接到所有其他效果上,这些效果最右边,因此您可以通过将数量设置为零来“删除它们之间的连接”。

    阿莱西QS 系列(QuadraSynth、Qs6-7-8-R和X.1版本)具有接近于某些声音结构,效果系统类似于……但是,您可以从3fx配置中选择一个。一个fx配置用于器官(qs具有令人难以置信的leslie仿真):leslie、choir、混响;另一个fx配置具有两个混响。你在如何利用齿轮的马力上有更多的自由。

    这些合成器很好,但你会忘记它们,因为你遇到 Clavia Nord模块化 . 它没有4层架构,也没有fx配置。它附带了一个win32程序,一个数据流编辑器。有各种组件:振荡器、滤波器、包络发生器等,您可以绘制您的配置。你应该画一个传统的4层的声音发生器,但是如果你想的话,你甚至可以画一个99层的。它简直就是石头。(不得不说,df并不是所有的:Roland JV有44.1 kHz的采样频率,qs有48k,modular有96k。)

    克拉维亚有另一条合成纤维生产线:诺德铅。里面有模块化的引擎(参数和声音都是一样的),但是你不能用数据流程序员来做这个模型。它们有一个固定的路径,有很多参数,但是您不能更改路径。此外,还有用于模块化的nord-lead补丁集:编辑器中的所有路径看起来都一样,只有pareter不同。

    下面是一个模块化补丁示例 http://www.clavia.se/pictures/nordmodular/patchwindowlarge.jpg

    如果您没有通过synth示例进行统计,例如,因为您是C程序员,下面是另一个更熟悉的示例:

    使-J

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

        3
  •  0
  •   Dimitris Andreou    16 年前

    如果你考虑一下,关系数据库就是海报的孩子。考虑任何评估计划,其中每个操作员处理来自其他操作员/表的行流,并生成反馈给其他操作员的流。

    从网上偷来的随机图像: alt text http://mathcs.slu.edu/~goldwasser/courses/slu/csa341/2003_Fall/lectures/oracle_optimizer/T3_treeB.gif

        4
  •  0
  •   ern0    15 年前

    看看这个: http://www.synthedit.com/

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

    另外,我刚在附近抓到一个人,我们在同一个邮件列表中,他创建了一个不错的TB303模拟器(著名的模拟老式合成),他使用Synthedit作为框架创建了它。因此,如图所示,它可以用作框架,不存在技术(或bizmodel)困难。

    所以,值得一看,我发现了浏览文档的很好的实现实践。尽管如此,该网站不包含该词 数据流 文件的编辑要更好,项目精神可以。还有一些“第三方”组件开发人员。它有很好的GUI前端,至少。

    推荐文章
    El.Hum  ·  SSIS不识别索引?
    8 年前