我想在 C++ 中设计一个并发对象池,可能的原型为:
template<std::size_t OBJ_SIZE>
class Pool {
public:
template<typename T>
void new(std::shared_ptr<T> & product);
// more details...
};
- 一旦对象(产品)被返回,它的生命周期就完全由包含该对象的智能指针控制。
- 池可能被多个线程使用。
我们如何在用户完成后自动回收对象/内存?
我的想法是在池中有一个 delete() 方法,该方法在产品的析构函数中调用。
有更好的设计吗?例如,产品类与池耦合较少的一种方式(注意它是一个通用池)。欢迎任何想法。