角色模型与通信顺序过程(CSP)之间的差异


16

当我们查看Actor模型通信顺序过程时,我们看到它们都试图基于消息传递来进行并发,但是它们是截然不同的

(我们在go-langgoroutines(和Clojure的core.async)中看到了CSP模型的实现,在Scala的Akka工具包中看到了Actor模型的实现

我正在尝试获取Actor模型和CSP之间差异的简单列表。到目前为止,我有:

它是否正确?有什么我想念的吗?

假设条件

  • 当我说“演员模型”时,我的意思是在Scala的Akka框架中实施的理论基础

重点:CSP消息传递是同步的;在Actors中,消息传递是异步的。
戴夫·克拉克2014年

@hawkeye您认为什么是“演员”模型?自从对其进行非正式描述以来,出现了许多形式化的内容,它们的性质有所不同。
Martin Berger 2014年

@Martin-很有帮助。我更新了我的假设。也许您可以帮助我找到“我正在寻找的人”
hawkeye

@hawkeye Akka模型对您意味着什么?只有关键的计算机制,还是分布式的监视/错误处理框架?
Martin Berger 2014年

@MartinBerger只是关键的计算机制
鹰眼2014年

Answers:


6

我认为这是Erlang的工作方式。我相信Akka非常相似。

每个进程都有一个邮箱。邮件由发送者放入接收者的邮箱,并由接收者使用模式匹配来获取。在邮箱中最旧的邮件可能不匹配,而较年轻的邮件可以匹配的意义上,此匹配过程可以更改邮件顺序。在这种情况下,较年轻的被首先食用。除此之外,保留消息顺序。

考虑到这一点,异步 π用来自缓冲区的输入模式匹配扩展的-calculus可以准确地描述Erlang(以及Akka)语义,尽管在编码中需要做一些工作,因为 π-calculus不受每个进程单个通道的限制。但是,通常不需要编码,而需要直接对目标系统建模的演算。存在这样的演算,它被称为Featherweight Erlang。它是由Mostrous和Vasconcelos撰写的。他们的论文集中在打字上,但是您可以忽略它,而只看第3节中的未打字演算。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.