为什么DataFlow变量只能分配一次

时间:2012-06-03 04:27:25

标签: groovy concurrency dataflow gpars

我现在正在探索GPars(Groovy并行系统)库,我遇到了DataFlow变量。文档说数据流变量只能分配一次。但是我找不到这种限制的理由。

有人可以告诉我为什么GPars中的数据流变量只被分配一次吗?

2 个答案:

答案 0 :(得分:2)

在数据流编程中,变量是一次写入的,这就是他们同步使用(消耗)其值的代码的方式 - 正是这个数据流指导执行。

一本关于一般编程和数据流并发的好书是Concepts, Techniques, and Models of Computer Programming,在这里你可以了解更多关于数据流同步变量的使用方式(使用Oz语言)。

另一方面,如果您可以为变量分配多个值,那么每次写入值时,都应该通知其消费者 - 这听起来更像是消息传递。

答案 1 :(得分:0)

由于DataflowVariable永远不能改变它的值,因此不能有任何竞争条件。您甚至可以进行非阻塞写入,因此设计非常高效且无死锁。在初始分配之后,您甚至可以进行非阻塞读取。