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

Я хочу создать параллельный объектный пул в C ++, возможный прототип как:

template<std::size_t OBJ_SIZE>
class Pool {
public:
template<typename T>
void new(std::shared_ptr<T> & product);
// more details...
};
  • Как только объект (продукт) возвращается, его время жизни полностью контролируется умными указателями, содержащими объект.
  • Пул может использоваться несколькими потоками.

Как мы автоматически возвращаем объект / память после того, как пользователь покончит с ним?

Моя идея состоит в том, чтобы иметь метод delete () в пуле, который вызывается в деструкторе продукта.

Есть ли лучший дизайн? например способ, где классы продуктов менее связаны с пулом (обратите внимание, что это общий пул). Любая идея приветствуется.

0

Решение

Если я правильно понимаю ваш вопрос, вам нужно вернуть shared_pointer с пользовательским удалением. Deleter будет знать, как удалить объект, используя метод deallocate () пула. Это стандартный подход к этой проблеме.

0

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

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

По вопросам рекламы [email protected]