2012-01-31 2 views
2

덜 배우 (즉) 3 명의 액터로 일부 작업 (10 개라고합시다)을 실행해야합니다.스칼라 액터 스마트 라우팅

하지만 실행 시간이 다를 수 있기 때문에 처음에는 모든 작업을 배포하고 싶지 않습니다. 그래서 나는 그들 모두에게 1 개의 과제를 보내야하며, 어떤 과제라도 완료하면 새로운 과제를 부여 받게된다. 이 방법은 첫 번째 작업이 3 초 걸리고 ~ 0.5 초 만 쉬는 작업은 3 초 안에 완료 할 수 있습니다.

갖는 10 작업 목록 :

내가 갖고 싶어
(() => Thread.sleep(3000); println("done long"}) :: (1..9).map({() => println("done short")}) 

출력 :

done short 
done short 
done short 
done short 
done short 
done short 
done short 
done short 
done short 
done long 

내가 매니저에게 배우를 반환하고 다시 작업을 재분배, 관리자 배우를 쓸 수 있지만, 내가 기대했다 Scala 또는 Akka에서 고정 솔루션을 찾으십시오.

답변

3

Akka는 Dispatchers를 지원하며 특히 도둑질을 지원합니다. 자세한 내용은 this 게시물을보십시오.

+0

감사합니다. 'Work stealing'은 다음 구문을 찾는 구절이었습니다. 다른 기사는 http://janvanbesien.blogspot.com/2010/03/load-balancing-actors-with-work.html입니다. –

관련 문제