【问题标题】:Reliable actor reentrancy across different actor types跨不同actor类型的可靠actor重入
【发布时间】:2017-03-10 14:16:58
【问题描述】:

通过阅读here,我看到演员是可重入的,我希望以下情况属实:如果我有一个单一类型的演员ThespianType,但有三个特定的演员ThespianType (T1T2T3),那么这不会死锁:

(external client) -> T1.MethodA() -> T2.MethodB() -> T3.MethodC() -> T1.MethodD()

我的问题是:相同的可重入性是否扩展到多种参与者类型?

例如,假设我们有:

  • 两种Actor类型PainterTypeBrushType;和
  • 每种类型一个演员:画家P1和刷子B2

现在发生了:

(external client) -> P1.MethodX() -> B2.MethodY() -> P1.MethodZ()

假设MethodZ() 是一个没有阻塞调用的简单方法。

问题:是否会出现死锁(或由于检测到死锁而引发 ServiceFabric 异常)?

【问题讨论】:

    标签: azure azure-service-fabric


    【解决方案1】:

    只要您正确使用 Actors(例如不启动您自己的线程),就不会发生死锁。类型无关紧要。

    Actor 运行时默认允许重入。这意味着如果一个 Actor A 的 actor 方法调用 Actor B 上的一个方法,该方法又调用 Actor A 上的另一个方法,该方法允许运行。这是 因为它是同一个逻辑调用链上下文的一部分。所有计时器 和提醒呼叫从新的逻辑呼叫上下文开始。见 Reliable Actors 可重入以了解更多详细信息。

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

    【讨论】:

      猜你喜欢
      • 2021-11-22
      • 2018-07-04
      • 1970-01-01
      • 2019-06-18
      • 2017-02-15
      • 2015-07-16
      • 2015-04-15
      • 2020-04-26
      • 2020-07-09
      相关资源
      最近更新 更多