У меня создалось впечатление, что object pool
- это шаблон проектирования, используемый для управления группой предварительно выделенных объектов, на которые клиент может запросить и вернуть один из этих объектов. Однако кажется, что класс boost.pool
object_pool
имеет больше общего с управлением памятью более низкого уровня, чем управление объектами. Почему они пошли с этим именем, в отличие от чего-то вроде memory_pool
? Неужели я ошибаюсь в том, что пул объектов boost - это действительно схема объединения памяти? Или они по сути то же самое? Кроме того, почему не была стандартная реализация более высокоуровневого шаблона пула объектов?Уточнение в шаблоне «пул объектов»?
ответ
После более тщательного изучения документации boost.pool
, я думаю, я понимаю свое замешательство. Я привык думать о пуле объектов, реализованном как класс, который выделяет и управляет набором прямых объектов. Рассмотрим,
template<class T>
class object_pool {
private:
std::list<T*> m_reserved; // holds onto any objects that have been allocated
public
T *acquire() { /* grabs from reserved list */ }
};
Тем не менее, кажется, boost.pool
реализует различные концепции пула объектов, которая используется для совершенно иной цели, чем та, как предложено выше. boost.pool
выделяет и управляет базой памяти желаемого объекта (ов), предположительно, чтобы он мог увеличить производительность кучи с помощью того, что он описывает как Simple Segregated Storage. Это на самом деле не следовать this concept шаблона пула объекта. Объяснение различия между двумя шаблонами можно найти в ответе на мой subsequent question.
[Эта концепция] (http://en.wikipedia.org/wiki/Object_pool_pattern) очень похожа на [кластер-распределитель/look-side cache] (http://www.makelinux.net/ldd3/chp-8- раздел-2). –
- 1. пул объектов и пул соединений
- 2. Пул объектов
- 3. Уточнение при создании объектов
- 4. Шаблон проектирования: пул объектов соединений
- 5. Пул параллельных объектов Java?
- 6. Пул хешируемых объектов
- 7. Пул Одиночных объектов ColdFusion
- 8. Пул объектов: howto
- 9. Универсальный пул объектов
- 10. Общий пул объектов
- 11. Пул пула объектов в Java
- 12. Пул объектов и вспышка
- 13. Уточнение относительно копий клиентов (объектов)
- 14. Пул объектов - создание объектов позже не работает
- 15. уточнение массива объектов только в группе
- 16. Пул объектов vs контейнер объекта
- 17. Пул объектов против динамического распределения
- 18. Как создать потокобезопасный пул объектов?
- 19. Пул общих объектов без Thread.Sleep?
- 20. Пул объектов в C# throwing StackoverFlow Exception
- 21. Уточнение необходимо, чтобы презентатор в шаблоне MVP знал
- 22. Android Реализуйте пул объектов в Andengine для разных типов объектов
- 23. PHP Пул по пул
- 24. Azure Redis Cache - пул ConnectionMultiplexer объектов
- 25. Сколько объектов создано (пул пула + куча)
- 26. Design Pattern Help: Пул уникальных объектов
- 27. Один пул объектов содержат различные производные классы
- 28. Есть ли общий пул объектов для .NET?
- 29. Пул объектов: абстрактный суперкласс или общий?
- 30. Работает ли этот базовый пул объектов Java?
Вы думаете о чем-то вроде [распределителя плиты] (http://en.wikipedia.org/wiki/Slab_allocation). Это шаблон, который сохраняет некоторые общие свойства объектов, чтобы объект был частично построен в пуле? Я думаю, что было бы сложно смоделировать * частично * построенный объект в C++. Как они будут * завершены *? Интересный вопрос. –
Вы путаете распределение со строительством? – Yakk
Я предоставил ответ, который, как я считаю, вызывает мое замешательство, хотя не стесняйтесь комментировать, если мне кажется, что моя интерпретация реализации «boost.pool» неверна. – jwalk