Promise和DataFlow之间有相似之处吗?

时间:2014-08-21 17:39:38

标签: multithreading concurrency parallel-processing dataflow

据我所知,promise会返回未来,数据流也会返回未来,我相信数据流是对promise的抽象,并且当它所依赖的值变为可用时触发。数据流是否像承诺的图形结构?有人能说清楚吗?

1 个答案:

答案 0 :(得分:1)

是的,您可以将数据流视为未来图表。所以这个数据流图:

可以用期货(在Clojure中)实现,如下所示:

user=> (let [a (future (+ 1 2))
  #_=>       b (future (+ 3 4))]
  #_=>   (+ @a @b))
10

(此示例来自Seven Concurrency Models in Seven Weeks)。

尽管如此,虽然两者之间存在概念上的相似之处,但期货很少用于实现纯数据流,因为它们通常过于昂贵(使用这样的简单加法操作肯定太贵了)。

如果您对数据流特别感兴趣,可以查看Oz language。另一种具有概念相似性的方法是使用,例如,Microsoft的Rx (Reactive Extensions)库进行反应式编程。