Scala远程演员 - 陷阱

Ste*_* K. 5 network-programming scala remote-actors scala-2.8 actor

在编写Scala RemoteActor代码时,我发现了一些陷阱:

  • 必须设置RemoteActor.classLoader = getClass().getClassLoader()以避免"java.lang.ClassNotFoundException"
  • 链接并不总是有效,因为"在远程操作员的代理(更具体地说,代理委托)有机会发送之前,支持远程操作员的NetKernel(负责远程转发消息的工具)可以关闭的竞争条件远程指示本地出口的消息." (Stephan Tu)
  • RemoteActor.select并不总是返回相同的委托(RemoteActor.select - 结果确定性?)
  • 通过网络发送代理会阻止应用程序正常退出(RemoteActor取消注册actor)
  • 如果在act之外使用RemoteActor.alive()和RemoteActor.register(),Remote Actors将不会终止.(见马格努斯的回答)

程序员应该注意其他任何陷阱吗?

Mag*_*nus 2

这是另一个;当您定义演员时,您需要将 RemoteActor.alive() 和 RemoteActor.register() 调用放入您的 act 方法中,否则当您调用 exit() 时演员不会终止;请参阅如何杀死 RemoteActor?