5

我想使用 Scala Actor 框架进行包含大约 10.000 个代理(机器和产品代理)的多代理模拟。

据我了解,如果有很多参与者传递消息,它会由于递归而耗尽堆栈吗?

如果是这样,我怎样才能增加底层工作线程的堆栈大小?

4

1 回答 1

11

Actor 框架被设计来处理这个问题——事实上,它可以只用一个线程来处理这个问题,假设您使用loop-react如下模式:

import actors._
import actors.Actor._

val a = actor {
  loop {
    react {
      case ABC => //Handle here

    }
  }
}

在Programming in Scala的第 590-593 页上对此进行了更详细的讨论:基本上该react方法永远不会正常返回(它以异常终止),因此不需要保留其调用堆栈。您可以将其视为永远循环。

于 2009-06-23T07:57:50.997 回答