加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何以支持演员模式的语言实现“成为”?

发布时间:2020-12-16 09:13:09 所属栏目:安全 来源:网络整理
导读:演员模式由Gul Agha在其技术报告“演员:分布式系统中的并发计算模型”中描述得很好. 在第49页,他解释了“成为”命令: become expression 在调用“成为X”后,演员将其所有的消息转发给另一个演员的邮箱(X). 不过,我不知道如何在Erlang和Scala这样的语言中实
演员模式由Gul Agha在其技术报告“演员:分布式系统中的并发计算模型”中描述得很好.

在第49页,他解释了“成为”命令:

become <expression>

在调用“成为X”后,演员将其所有的消息转发给另一个演员的邮箱(X).

不过,我不知道如何在Erlang和Scala这样的语言中实现这一功能.这是我要手动编码吗?效率怎么样? Agha使用消息传递显示堆栈的实现.每次执行流行或推送时,还会向一些演员添加一个转发链接…经过数十万次操作,我希望这样的一个实现可以花太多的时间转发消息,而不是做实际工作,除非有一些引擎盖下执行了不错的优化.

所以我的问题是:如Erlang,Scala(和其他语言的图书馆)的典型演员语言中如何实现转发(或“成为”)?

解决方法

请参阅Agha的论文“演员:分布式系统中的并发计算模型”第12页(PDF副本的第26页). “成为”他的演员语言是你如何指定#2,演员的新行为.将消息转发给另一个演员只是许多可能的新行为之一.

如果您想要转发行为,我认为与Scala演员您在本质上是一样的Erlang船.在引擎盖下,Scala“反应”和“反应”工作很像成为,因为反应块定义的部分功能是演员的新行为,但我不知道相似性是甚至有意的.

大多数(所有?)“演员”的实现与休伊特的演员模式和Agha的演员语言相当显着地偏离. IIRC的语言部分从指定演员的行为在Agha的水平甚至不是图灵完成.当您考虑演员的配置时,整个语言只会变成图灵完成.我会说演员模型和现在的演员框架之间的关系就像在SmallTalk中的面向对象与C中的面向对象之间的关系.有一些概念转移和类似的术语,但在细节上它们是非常非常不同的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读