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中的面向对象之间的关系.有一些概念转移和类似的术语,但在细节上它们是非常非常不同的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 搭建本地 yum 源 离线安装 Docker 1.12.6
- bash – 如果脚本有出口陷阱发生shell错误,则将退出代码传播
- 使用ExtJs开发MIS系统(1):基于ExtJs的MIS构架设计
- 我在页面上有两个模态,(我正在使用bootstrap);点击任何模态
- 何时在Scala中使用存在类型?
- 使用Bash将一大块文本回显到文件中
- angularjs – Angular.js和Amazon S3 – 如何上传文件?
- Bootstrap table 定制提示语的加载过程
- angularjs – AngularStack Facebook,Google和Twitter身份验
- bash – 如何从wget获取真实的文件名