【发布时间】:2013-03-28 13:59:57
【问题描述】:
我的印象是object pool 是一种设计模式,用于管理一组预先分配的对象,客户端可以请求并返回其中一个对象。但是,似乎boost.pool 的object_pool 类更多地与较低级别的内存管理有关,而不是对象管理。为什么他们用这个名字,而不是像memory_pool这样的名字?我是不是误以为 boost 的对象池真的是一个内存池方案?或者它们本质上是一样的?另外,为什么没有更高级别的对象池模式的标准实现?
【问题讨论】:
-
你在想slab allocator之类的东西吗?那是一种保持一些常见对象属性初始化的模式,以便在池中部分构造对象?我认为很难在 C++ 中对 部分 构造的对象进行建模。他们将如何完成?一个有趣的问题。
-
您是否将分配与构造混淆了?
-
我提供了一个答案,我相信可以解决我的困惑,但如果听起来我对
boost.pool实现的解释是错误的,请随时发表评论。 -
嗨,谢谢这个问题。我也有同样的问题。我需要一个“对象池”,以便我可以重用对象。 boost 在这个方向上提供了什么吗?或者使用
boost::pool比简单的手工制作的“对象池”有什么优势,它只是重用对象?
标签: c++ objectpool boost-pool