Может ли Scala Actor Framework обрабатывать 10.000 актеров без проблем со стеком? - PullRequest
5 голосов
/ 23 июня 2009

Я хочу провести мультиагентное моделирование, содержащее около 10.000 агентов (агентов машин и продуктов) с использованием платформы Scala Actor.

Как я понимаю, если есть много актеров, передающих сообщения, может ли он закончиться из-за рекурсии?

Если так, как я могу увеличить размеры стека для базовых рабочих потоков?

1 Ответ

11 голосов
/ 23 июня 2009

Платформа актера была разработана для этого - фактически она может обрабатывать это только с одним потоком, при условии, что вы используете шаблон loop-react следующим образом:

import actors._
import actors.Actor._

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

    }
  }
}

На стр. 590-593 из Программирование в Scala это обсуждается более подробно: в основном метод react никогда не возвращается нормально (он завершается с исключением), и поэтому его стек вызовов не нуждается в быть сохраненным. Вы можете думать об этом как о цикле навсегда.

...