【问题标题】:Scala Remote Actors - PitfallsScala Remote Actors - 陷阱
【发布时间】:2011-03-19 03:31:35
【问题描述】:

在编写 Scala RemoteActor 代码时,我注意到了一些陷阱:

  • 必须设置RemoteActor.classLoader = getClass().getClassLoader() 以避免“java.lang.ClassNotFoundException”
  • 链接并不总是有效,因为“支持远程参与者的 NetKernel(负责远程转发消息的设施)可以在远程参与者的代理(更具体地说,代理委托)拥有有机会远程发送一条消息,指示本地出口。” (Stephan Tu)
  • RemoteActor.select 并不总是返回相同的委托 (RemoteActor.select - result deterministic?)
  • 通过网络发送委托会阻止应用程序正常退出 (RemoteActor unregister actor)
  • 如果 RemoteActor.alive() 和 RemoteActor.register() 在动作之外使用,远程 Actor 不会终止。 (见 Magnus 的回答)

程序员还应该注意哪些其他陷阱?

【问题讨论】:

  • 我目前正面临“RemoteActor.classLoader = ...”的陷阱,但即使我需要这行somewhere,我也不知道在哪里!谁能指出对此的解释?

标签: scala network-programming scala-2.8 actor remote-actors


【解决方案1】:

这是另一个;当您定义您的演员时,您需要将 RemoteActor.alive() 和 RemoteActor.register() 调用放在您的 act 方法中,否则当您调用 exit() 时,演员不会终止;见How do I kill a RemoteActor?

【讨论】:

    猜你喜欢
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 2011-10-07
    相关资源
    最近更新 更多