Scala Actor フレームワークを使用して、約 10.000 のエージェント (マシンおよび製品エージェント) を含むマルチエージェント シミュレーションを実行したいと考えています。
私が理解しているように、多くのアクターがメッセージを渡している場合、再帰のためにスタックが不足する可能性がありますか?
その場合、基になるワーカー スレッドのスタック サイズを増やすにはどうすればよいですか?
Scala Actor フレームワークを使用して、約 10.000 のエージェント (マシンおよび製品エージェント) を含むマルチエージェント シミュレーションを実行したいと考えています。
私が理解しているように、多くのアクターがメッセージを渡している場合、再帰のためにスタックが不足する可能性がありますか?
その場合、基になるワーカー スレッドのスタック サイズを増やすにはどうすればよいですか?
アクター フレームワークは、これを処理するように設計されています。実際、loop-react
次のようにパターンを使用すると仮定すると、1 つのスレッドだけでこれを処理できます。
import actors._
import actors.Actor._
val a = actor {
loop {
react {
case ABC => //Handle here
}
}
}
Programming in Scalaの pp 590-593 で、これについて詳しく説明しています。基本的に、react
メソッドは正常に返されることはなく (例外で終了します)、したがって、その呼び出しスタックを保存する必要はありません。永遠にループしていると考えることができます。