2

作为一个强类型并让编译器完成工作的人(而不是“希望”我记得),我想为我的基于 akka 的库使用 ActorRef 以外的类型。

这样做有什么惩罚吗?基本上,包装器只会实现相同的方法(告诉、询问等),然后直接将其转发给演员并持有 ActorRef,这样我就可以拥有一个强类型的外观。

如果有人有任何见解,那就太好了。我对并发编程或演员模型不够熟悉,不知道这是否会以某种方式减慢速度。

编辑:这里有一些代码示例,如下所示。

例如。通常我会在 Akka 中执行此操作。

val actor = context.actorOf(Props[Whatever])

此时,它被键入为一个 ActorRef。因此,我的代码中的所有内容都必须与 ActorRefs 一起使用。执行以下操作是否有任何不利之处...

class Wrapper(props: Props)(implicit context: ActorContext) {
  val actor = context.actorOf(props)

  def ! (message: Any):Unit = {
    actor ! message
  }

  //insert a direct wrapper of other regular actor functions here.

}

然后,它会被调用并且行为与演员完全一样,除非我可以强输入我的设计。因为每个 Wrapper 都将使用封闭类进行键入。

这有什么缺点吗?我意识到这不是绝对必要的,但留下强类型有点麻烦。

对我来说,我想到的是,如果这个类将在某个设置的线程上运行,并防止下面的 akka actor 像往常一样异步运行(与许多共享线程池等交换)......因为我假设行为只发生在演员身上,所以我的班级可能在其他地方设置了瓶颈。

4

1 回答 1

1

I think you should look at Typed Actors.

于 2013-11-10T07:41:04.640 回答