8

我想知道卡恩流程网络和演员模型之间的实际区别是什么。事实上,如果我查看定义,它们都是计算实体(在两种情况下都称为 Actors ......)通过无界缓冲区交换消息的模型。此外,在这两种情况下,这些消息都是异步发送的,因为过程总是可以发送消息。它不需要等待收件人准备好接收。

因此我的问题是,有什么实际区别吗?

非常感谢 !

4

1 回答 1

5

Kahn 过程网络保证是确定性的。进程之间的所有 FIFO 连接都是事先已知的,并且它们在执行过程中不会动态改变。相反,在演员模型的情况下(引用维基百科):

为了响应它接收到的消息,参与者可以做出本地决策,创建更多参与者,发送更多消息,并确定如何响应收到的下一条消息。

因此,Actor 模型不能保证是确定性的。引用维基百科:

Actor 模型具有无限的不确定性,Will Clinger 使用域理论在数学模型中捕获了这种不确定性。

另一个重要的区别是沟通是如何发生的

在 KPN 的情况下 - 为了保持确定性,所有通信都通过 FIFO 通道进行。但是在 Actor 模型的情况下没有这样的要求。引用维基百科:

[在 KPN 中] 对消息到达的顺序没有要求 [....] 如果需要输出消息的顺序,则可以通过提供此功能的队列 Actor 对其进行建模。这样的队列 Actor 将对到达的消息进行排队,以便可以按 FIFO 顺序检索它们。因此,如果一个 Actor X 向 Actor Y 发送了一条消息 M1,然后 X 又向 Y 发送了一条消息 M2,则不要求 M1 在 M2 之前到达 Y。

在这方面,Actor 模型反映了不保证必须按照发送顺序接收数据包的数据包交换系统。不提供传递顺序保证允许数据包交换缓冲数据包、使用多条路径发送数据包、重新发送损坏的数据包以及提供其他优化。

从上面的讨论中可以很清楚地看出,KPN 是一个更受约束的场景,可以通过添加额外的限制使用 Actor 模型进行建模。

于 2012-10-27T07:31:04.140 回答