小编Kev*_*vin的帖子

当多个远程演员使用多个期货时,程序会挂起

我在一个主机上启动了两个远程演员,它们只是回显发送给他们的内容.然后我创建另一个actor,它向两个actor发送一些消息(使用!!),并保留一个List of Future对象来保存这些actor的回复.然后我遍历此List获取每个Future的结果.问题在于大多数时候某些期货永远不会回归,甚至认为这位演员声称它已经发出了回复.问题是随机发生的,有时它会通过整个列表,但大多数情况下它会在某个时刻陷入困境并无限期挂起.

以下是一些在我的机器上产生问题的代码:

Sink.scala:

import scala.actors.Actor
import scala.actors.Actor._
import scala.actors.Exit
import scala.actors.remote.RemoteActor
import scala.actors.remote.RemoteActor._

object Sink {
  def main(args: Array[String]): Unit = {
     new RemoteSink("node03-0",43001).start()
     new RemoteSink("node03-1",43001).start()
   }
}
class RemoteSink(name: String, port: Int) extends Actor
{
 def act() {
    println(name+" starts")
    trapExit=true
    alive(port)
    register(Symbol(name),self)

    loop {
        react {
            case Exit(from,reason) =>{
                    exit()
            }
            case msg => reply{
                    println(name+" sending reply to: "+msg)
                    msg+" back at you from "+name
                }
        }
    }
 }
}
Run Code Online (Sandbox Code Playgroud)

Source.scala:

import scala.actors.Actor
import scala.actors.Actor._ …
Run Code Online (Sandbox Code Playgroud)

scala future scala-2.8 actor

5
推荐指数
1
解决办法
754
查看次数

标签 统计

actor ×1

future ×1

scala ×1

scala-2.8 ×1