actor中!(tell)与forward的区别
来源:互联网 发布:淘宝频道退货 编辑:程序博客网 时间:2024/04/29 08:30
! 的源码:
def !(message: Any)(implicit sender: ActorRef = Actor.noSender): Unit
tell 的源码:
final def tell(msg: Any, sender: ActorRef): Unit = this.!(msg)(sender)
forward 的源码:
def forward(message: Any)(implicit context: ActorContext) = tell(message, context.sender())
通过源码,我们可以轻而易举的知道 :
! 发送的消息的发送者通过一个隐式转换,把一个ActorRef转换成sender,如果找不到ActorRef的话,那个发送者就是noSender。
forward 发送消息的发送者是当前消息的上一个发送者。
即:
A To B, B To C
如果通过!的方式发送消息,则C接收到的消息的发送者是B.
如果通过 forward 的方式发送消息,则C接收到的消息的发送者是A.
如果希望 !的方式发送消息的同时携带发送者消息,则可以使用 .!(msg)(sender)
如果希望关掉actor,直接shutdown或者使用父亲actor的stop,在actor内部还可以使用context.stop(self)
0 0
- actor中!(tell)与forward的区别
- actor中!(tell)与forward的区别
- Unreal 中 Actor与Pawn的区别
- Struts中forward与global-forward的区别
- jsp中forward与sendRedirect的区别
- JSP中forward与sedRedirect的区别
- Jsp中include与forward的区别
- jsp中forward与sendRedirect的区别
- servlet中forward与redirect的区别
- forward与global-forward的区别
- Servlet中forward和include的区别&forward与redirect区别
- forward与direct的区别!
- forward与redirect的区别
- forward与redirect的区别!
- forward与redirect的区别
- forward与redirect的区别
- forward 与redirect的区别
- forward() 与redirect()的区别
- c# 委托类传值简单实例
- 【Java集合源码剖析】Hashtable源码剖析
- 2015年大一下第1周项目1-阅读程序(2)
- method initializationerror not found:JUnit4单元测试报错问题
- iOS的重用机制
- actor中!(tell)与forward的区别
- 你刚在淘宝上买了一件衣服---详细解析技术流程(淘宝首页显示一个页面的过程)
- 三层登陆问题——未处理AccessViolationException,试图读取或写入受保护的内存。这是通常指示其他内存已损坏。
- UVA 1364 - Knights of the Round Table (找双连通分量 + 二分图染色法判断)
- OJ 21之Mincost(
- 十、oc中@property参数的学习
- Linux的文件权限
- windows常用运行命令
- 使用Unity3D的50个技巧:Unity3D最佳实践