Пул параллельных объектов, срок жизни продуктов которых полностью контролируется интеллектуальными указателями, содержащими объект
Я хочу создать параллельный объектный пул в C++, возможный прототип как:
template<std::size_t OBJ_SIZE>
class Pool {
public:
template<typename T>
void new(std::shared_ptr<T> & product);
// more details...
};
- Как только объект (продукт) возвращается, его время жизни полностью контролируется умными указателями, содержащими объект.
- Пул может использоваться несколькими потоками.
Как мы автоматически возвращаем объект / память после того, как пользователь покончит с ним?
Моя идея состоит в том, чтобы иметь метод delete() в пуле, который вызывается в деструкторе продукта.
Есть ли лучший дизайн? например, способ, которым классы продуктов менее связаны с Пулом (обратите внимание, что это общий пул). Любая идея приветствуется.
1 ответ
Если я правильно понимаю ваш вопрос, вам нужно вернуть shared_pointer с пользовательским удалением. Deleter будет знать, как удалить объект, используя метод deallocate() пула. Это стандартный подход к этой проблеме.