Разъяснение по поводу «пула объектов» шаблон?

У меня сложилось впечатление, что object pool шаблон проектирования, используемый для управления группой предварительно выделенных объектов, к которым клиент может запросить и вернуть один из этих объектов. Тем не менее, кажется, что boost.pool«s object_pool Класс больше связан с управлением памятью более низкого уровня, чем с управлением объектами. Почему они пошли с этим именем, в отличие от чего-то вроде memory_pool? У меня неправильное впечатление, что пул объектов Boost действительно является схемой пула памяти? Или они по сути одно и то же? Кроме того, почему не было стандартной реализации более высокоуровневого шаблона пула объектов?

4

Решение

После прочтения более подробно в 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 распределяет и управляет основная память желаемого объекта (ов), предположительно так, чтобы он мог увеличить производительность кучи посредством того, что он описывает как Простое сегрегированное хранилище. Это на самом деле не следовать эта концепция шаблона пула объектов. Объяснение различия между этими двумя образцами можно найти в ответе на мой последующий вопрос.

5

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector