2009-06-23 3 views
5

Scala 액자 프레임 워크를 사용하여 약 10,000 명의 에이전트 (기계 및 제품 에이전트)가 포함 된 다중 에이전트 시뮬레이션을 수행하고 싶습니다.스칼라의 액터 프레임 워크는 스택 문제없이 10.000 액터를 처리 할 수 ​​있습니까?

많은 사람들이 메시지를 전달하는 경우 재귀 때문에 스택이 부족할 수 있습니까?

그렇다면 기본 작업자 스레드의 스택 크기를 늘리려면 어떻게해야합니까?

답변

11

배우 프레임 워크는이 처리 할 수 ​​있도록 설계되었습니다 - 다음과 같이 당신이 loop-react 패턴을 사용하는 가정, 사실, 그것은 단지 하나 개의 스레드로이 문제를 처리 할 수 ​​프로그래밍의 PP 590-593에

import actors._ 
import actors.Actor._ 

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

    } 
    } 
} 

스칼라에 대한 자세한 내용은 다음과 같습니다. 기본적으로 react 메서드는 정상적으로 반환되지 않으며 예외로 종료되므로 호출 스택을 보존 할 필요가 없습니다. 영원히 반복적 인 것으로 생각할 수 있습니다.

+0

감사합니다. 그 책에서 그 문장을 간과 한 것 같습니다. 그리고 작업자 스레드 스택 크기를 늘리는 방법은 무엇입니까? 단지 궁금한 점이 있습니까? – akarnokd

+1

에서보십시오 : http://lampsvn.epfl.ch/trac/scala/browser/scala/tags/R_2_7_5_final/src/actors/scala/actors/FJTaskScheduler2.scala?view=markup. "actors.maxPoolSize"등의 시스템 속성을 정의 할 수 있습니다. –

+0

요점은 FJTaskScheduler가 시스템에서 지원하는 동시성 (즉, 사용 가능한 프로세서의 수)을 결정할 수있게하는 것이지만 –

관련 문제