2012-09-25 3 views
7

개체 풀 관리를 위해 scala에서 선호되는 방법은 무엇입니까?개체 풀 관리를위한 scala-way

대용량의 단일 스레드 개체를 만들고 삭제해야합니다 (동기화 할 필요 없음). C++에서는 정적 객체 배열을 사용했습니다.

스칼라로 대처하기 위해 관용적이고 효과적인 방법은 무엇입니까?

+0

관용적 인 방법은 gc가 작업을하고 걱정하지 않는 것입니다. 이것이 충분히 빠르지 않다면 관용적 인 일은 GC를 조정하는 것입니다. –

+0

왜 개체 풀이 필요하다고 생각하십니까? 첫 시도로 GC를 사용 해보려고 했습니까? 풀링 된 객체를 초기화/재설정하는 비용이 높습니까? – paradigmatic

+0

입자 시스템을 쓰고 있습니다. 입자는 빠르게 살고 어린 시절에 죽습니다. 사실 그렇게 많은 입자가 있습니다. 모든 파티클은 속성과 필드면에서 동일하기 때문에 대처하는 가장 눈에 띄는 방법은 객체 풀을 만드는 것입니다. – ayvango

답변

4

나는 그것을 액터로 감쌀 것입니다. 당신이 익숙하지 않은 경우, Akka 체크 아웃 : https://github.com/derekjw/fyrie-redis/blob/master/src/main/scala/net/fyrie/redis/ConnectionPool.scala

액터 모델은 배우가 수신 메시지를 한 번에 하나씩 처리하기 때문에 단일 스레드 액세스를 보장 할 수 있습니다 : http://doc.akka.io/docs/akka/2.0.3/scala/actors.html

이 꽤 좋은 예입니다. 이는 액터 내부의 매우 간단한 코드와 매우 간단한 API로 이어집니다.