1
3
这不仅仅是因为这不是一个好的做法,这是不可能做到的。上下文Parent给你一个ActorRef,它决不是ParentActor可以铸造的。ActorRef只是一个向参与者发送消息的引用,其他什么都没有,它和参与者的类没有关系。 无论如何,根据阿克卡的原则,你永远不应该在参与者之间共享可变状态;演员的可变状态永远不应该泄露给演员。如果您需要将状态的一部分发送给另一个参与者,请确保它是不可变的,或者在将其发送到消息之前制作一个不可变的副本。正如您所提到的,如果您的子参与者将经常使用数据,您可以在构造函数上传递数据,但它必须是不可变的,否则,再次传递一个不可变的副本。 这背后的基本原理是,任何两个参与者都可以在给定的时间点同时运行。如果两个参与者共享对可变对象的访问权限,他们可能会同时修改它,从任何一个参与者的角度来看,都会导致竞争条件和不确定性行为。当然,您可以使用线程安全的数据结构,但这将破坏akka的全部目的,即允许您将消息处理视为在单个线程上运行。 |
2
1
我刚到阿克卡。net,但我对actor模型的理解表明,应该尽可能通过消息传递数据,而不是通过方法调用或构造函数参数。 |
Piotr Czarnecki · 种子节点重新启动后重新加入群集节点 7 年前 |
Gerard · 子参与者可以/应该使用其父参与者的属性吗? 7 年前 |
Gerard · “共享同一CLR”具体是什么意思? 7 年前 |
Neil · 使用Akka.net。带SSL的io 7 年前 |