跨越不同演员类型的可靠的演员重入

时间:2016-10-27 19:05:21

标签: azure azure-service-fabric

从阅读here我看到演员是可重入的,我希望以下是真实的:如果我有一个类型的演员ThespianType但是有三个特定演员{{1 (ThespianTypeT1T2),这不会死锁:

T3

我的问题是:相同的重入是否扩展到多个actor类型?

例如,假设我们有:

  • 两种演员类型(external client) -> T1.MethodA() -> T2.MethodB() -> T3.MethodC() -> T1.MethodD()PainterType;和
  • 每种类型的一个演员:画家BrushType和画笔P1

现在发生这种情况:

B2

假设(external client) -> P1.MethodX() -> B2.MethodY() -> P1.MethodZ()是一个没有阻塞调用的简单方法。

问题:此死锁(或由于检测到死锁而抛出ServiceFabric异常)?

1 个答案:

答案 0 :(得分:1)

只要正确使用Actors(例如,不启动自己的线程),就不会发生死锁。这种类型并不重要。

  

Actors运行时默认允许重入。这意味着,如果一个   Actor A的actor方法调用Actor B上的方法,而Actor B又调用   在Actor A上的另一个方法,允许该方法运行。这是   因为它是同一逻辑调用链上下文的一部分。所有计时器   和提醒调用以新的逻辑调用上下文开始。见   可靠的演员可以重新获得更多细节。

https://azure.microsoft.com/en-us/documentation/articles/service-fabric-reliable-actors-introduction/