0

我想在 C++ 中设计一个并发对象池,可能的原型为:

template<std::size_t OBJ_SIZE>
class Pool {
public:
    template<typename T>
    void new(std::shared_ptr<T> & product);
    // more details...
};
  • 一旦对象(产品)被返回,它的生命周期就完全由包含该对象的智能指针控制。
  • 池可能被多个线程使用。

我们如何在用户完成后自动回收对象/内存?

我的想法是在池中有一个 delete() 方法,该方法在产品的析构函数中调用。

有更好的设计吗?例如,产品类与池耦合较少的一种方式(注意它是一个通用池)。欢迎任何想法。

4

1 回答 1

0

如果我正确理解您的问题,您需要返回一个带有自定义删除器的 shared_pointer。Deleter 将知道如何使用池的 deallocate() 方法删除对象。这是解决此问题的标准方法。

于 2015-11-20T17:56:39.197 回答