Пул параллельных объектов, срок жизни продуктов которых полностью контролируется интеллектуальными указателями, содержащими объект

Я хочу создать параллельный объектный пул в 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() пула. Это стандартный подход к этой проблеме.

Другие вопросы по тегам