【发布时间】:2015-11-20 17:46:25
【问题描述】:
我想在 C++ 中设计一个并发对象池,可能的原型为:
template<std::size_t OBJ_SIZE>
class Pool {
public:
template<typename T>
void new(std::shared_ptr<T> & product);
// more details...
};
- 一旦返回对象(产品),其生命周期就完全由包含该对象的智能指针控制。
- 池可能被多个线程使用。
我们如何在用户完成后自动回收对象/内存?
我的想法是在池中有一个 delete() 方法,在产品的析构函数中调用。
有更好的设计吗?例如一种产品类与 Pool 耦合较少的方式(注意它是一个通用池)。欢迎任何想法。
【问题讨论】:
-
我不确定我是否理解这些要求。你是说要分配对象的生命周期由传入的不相关的shared_ptr的生命周期控制?
-
@RichardHodges,shared_ptr 用于包含返回的对象,并控制其生命周期。
标签: c++ multithreading object-pooling