简单的对象池

整体思路跟 内存池 差不多;

对象池更灵活一些, 下面代码可以和内存池结合在一起使用;

对象池的大概样子:

对象池只是针对某一个特定的class使用

有一个基类: template <typename T, size_t count > class ObjectPoolBaseClass ;

任何想拥有池的class, 比如class A 只需继承 ObjectPoolBaseClass<A,100>  就有一个可容纳100个A对象的池;

class ObjectPoolBaseClass 内含有一个静态变量 ObjectPool instance(池), 这个静态变量管理的所有申请/释放工作;

由于是静态变量,因此只针对一个class

 

 

综上,要使用/实现一个对象池,3部曲:

1. 创建一个 template <typename T , size_t count > class ObjectPool 用于申请/释放内存块;

2. 创建一个 template <typename T, size_t count >class ObjectPoolBaseClass 作为基类, 任何一个自定义class 想拥有一个

独立的内存池,只需要继承他就可以, ObjectPoolBaseClass 内部含有一个ObjectPool的静态变量将管理所有的申请/释放

3. 自定义一个class 继承ObjectPoolBaseClass 即可使用;

 

下面代码中已经加了关键段,可用于多线程:

#include <iostream>
using namespace std;
//对象池 , T 用来计算类型大小, cou
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值