scala-способ управления пулами объектов

Каков предпочтительный способ управления пулами объектов в scala?

Мне нужно создавать и удалять большое количество однопоточных объектов (нет необходимости в синхронизации). В С++ я использовал массив статических объектов.

Какой идиоматический и эффективный способ справиться с этим в scala?


person ayvango    schedule 25.09.2012    source источник
comment
идиоматический способ - позволить сборщику мусора делать свою работу и не беспокоиться об этом. Если этого недостаточно, идиоматично настроить GC.   -  person Kim Stebel    schedule 25.09.2012
comment
Как вы думаете, зачем вам нужен пул объектов? Пробовали ли вы полагаться на GC в качестве первой попытки? Высока ли стоимость инициализации/сброса объединенного объекта?   -  person paradigmatic    schedule 25.09.2012
comment
Я пишу систему частиц. Частица живет быстро и умирает молодой. На самом деле существует множество частиц, делающих это. Самый известный способ справиться с этим — создать пул объектов, поскольку все частицы одинаковы с точки зрения свойств и полей.   -  person ayvango    schedule 26.09.2012


Ответы (1)


Я бы завернул его в Актера. Если вы не знакомы, проверьте Akka: http://doc.akka.io/docs/akka/2.0.3/scala/actors.html

Это довольно хороший пример: https://github.com/derekjw/fyrie-redis/blob/master/src/main/scala/net/fyrie/redis/ConnectionPool.scala

Модель акторов позволяет гарантировать однопоточный доступ, поскольку акторы обрабатывают входящие сообщения по одному. Это приводит к очень простому коду внутри актора и очень простому API.

person dyross    schedule 25.09.2012