我想使用Scala Actor框架进行包含大约10.000个代理(机器和产品代理)的多代理模拟。
据我所知,如果有很多演员传递消息,那么由于递归会不会用完堆栈?
如果是这样,我如何增加底层工作线程的堆栈大小?
答案 0 :(得分:11)
actor框架设计用于处理这个问题 - 事实上,假设你使用loop-react
模式,它只能用一个线程来处理它:
import actors._
import actors.Actor._
val a = actor {
loop {
react {
case ABC => //Handle here
}
}
}
在 Scala编程的第590-593页中,将对此进行更详细的讨论:基本上react
方法永远不会正常返回(它以异常终止),因此它的调用堆栈会执行不需要保存。你可以把它想象成永远循环。