当我们查看Actor模型和通信顺序过程时,我们看到它们都试图基于消息传递来进行并发,但是它们是截然不同的。
(我们在go-lang的goroutines(和Clojure的core.async)中看到了CSP模型的实现,在Scala的Akka工具包中看到了Actor模型的实现)
我正在尝试获取Actor模型和CSP之间差异的简单列表。到目前为止,我有:
- actors消息传递是异步的,CSP消息传递是同步的
- 参与者是可组合的,CSP不是必需的
- 参与者始终具有无限的不确定性,CSP可能具有无限的不确定性
- 参与者具有可变拓扑,而CSP具有固定拓扑
- 参与者有地方性原则,CSP没有地方性
- 演员是根据自己的行为设计的,CSP不一定有这个
它是否正确?有什么我想念的吗?
假设条件
- 当我说“演员模型”时,我的意思是在Scala的Akka框架中实施的理论基础
重点:CSP消息传递是同步的;在Actors中,消息传递是异步的。
—
戴夫·克拉克2014年
@hawkeye您认为什么是“演员”模型?自从对其进行非正式描述以来,出现了许多形式化的内容,它们的性质有所不同。
—
Martin Berger 2014年
@Martin-很有帮助。我更新了我的假设。也许您可以帮助我找到“我正在寻找的人”
—
hawkeye
@hawkeye Akka模型对您意味着什么?只有关键的计算机制,还是分布式的监视/错误处理框架?
—
Martin Berger 2014年
@MartinBerger只是关键的计算机制
—
鹰眼2014年