需要说明的就是初始化的时候指定的是内存池分配内存块的大小,而且内存池是非线程安全的,多线程要加锁

#ifndef BUFFER_POOL_H
#define BUFFER_POOL_H#include "boost_comm.h"
using namespace boost;namespace seemmo
{class buffer_pool{public:buffer_pool(int chunk_size);~buffer_pool();protected:static boost::mutex mtx_;static buffer_pool *instance(){boost::unique_lock<boost::mutex> wlock(mtx_);static buffer_pool inst(1024);return &inst;}public:static char *comm_sz1024_buffer(){boost::unique_lock<boost::mutex> wlock(instance()->mtx_1_);return (char *)instance()->m_buffer_bp.malloc();}static void comm_sz1024_free(void *p){boost::unique_lock<boost::mutex> wlock(instance()->mtx_1_);instance()->m_buffer_bp.free(p);}static unsigned char *bin_value_alloc(){boost::unique_lock<boost::mutex> wlock(instance()->mtx_2_);return (unsigned char *)instance()->m_bin_value_.malloc();}static void bin_value_free(void *p){boost::unique_lock<boost::mutex> wlock(instance()->mtx_2_);instance()->m_bin_value_.free(p);}protected:boost::mutex mtx_1_;boost::pool<> m_buffer_bp;boost::mutex mtx_2_;boost::pool<> m_bin_value_;private:};
}#endif // BUFFER_POOL_H
#include "buffer_pool.h"#include "config.h"namespace seemmo
{boost::mutex buffer_pool::mtx_;buffer_pool::buffer_pool(int chunk_size):m_buffer_bp(BUFFER_POOL_COMM_CHUNK_SIZE),//1km_bin_value_(BUFFER_POOL_BIN_CHUNK_SIZE)//256k{}buffer_pool::~buffer_pool(){}
}

boost之内存池使用实例相关推荐

  1. boost pool内存池库使用简要介绍

    2019独角兽企业重金招聘Python工程师标准>>> 我厂内存次神马的一般都自己实现.我曾经也自己写过一个demo(mempool).后来发现boost库里面有一个内存池库boos ...

  2. boost之对象池使用实例

    这个主要用在http使用tcp支持短连接的情况,能快速获取连接对象而不用反复申请释放资源 #ifndef OBJECT_POOL_H #define OBJECT_POOL_H#include &qu ...

  3. linux boost内存池,开源C++函数库Boost内存池使用与测试

    [IT168 专稿]Boost库是一个可移植的开源C++函数库,鉴于STL(标准模板库)已经成为C++语言的一个组成部分,可以毫不夸张的说,Boost是目前影响最大的通用C++库.Boost库由C++ ...

  4. linux boost内存池,C++ boost库教程之内存池

    Boost  Pool 库提供了一个内存池分配器,它是一个工具,用于管理在一个独立的.大的分配空间里的动 态内存.当你需要分配和回收许多不的对象或需要更高效的内存控制时,使用内存池是一个好的 解决方案 ...

  5. 重写boost内存池

    最近在写游戏服务器网络模块的时候,需要用到内存池.大量玩家通过tcp连接到服务器,通过大量的消息包与服务器进行交互.因此要给每个tcp分配收发两块缓冲区.那么这缓冲区多大呢?通常游戏操作的消息包都很小 ...

  6. 不定长内存池之apr_pool

    内存池可有效降低动态申请内存的次数,减少与内核态的交互,提升系统性能,减少内存碎片,增加内存空间使用率,避免内存泄漏的可能性,这么多的优点,没有理由不在系统中使用该技术. 内存池分类: 1.      ...

  7. [内存管理]内存池pool库

    pool库概述 如果之前学过操作系统的内存管理机制和内存分配算法等知识,那么就了解"内存池"的概念. 简单地说,内存池预先分配了一块大的内存空间,然后就可以在其中使用某种算法实现高 ...

  8. C++性能优化(七)——内存池技术

    一.内存池简介 1.C++内存池简介 内存池(Memory Pool)是一种内存分配方式,是在真正使用内存前,先申请分配一定数量的.大小相等(一般情况下)的内存块留作备用.当有新的内存需求时,就从内存 ...

  9. Memcached内存池分析

    针对Memcacged1.4.15代码 1.完整slabs内存池图 这是我画的memcached的slabs内存池对象关系图: 2.内存池数据结构 typedef struct {unsigned i ...

最新文章

  1. python 模拟浏览器selenium 微信_Spider-Python爬虫之使用Selenium模拟浏览器行为
  2. SQL Server中的几个方法和Transact SQL 常用语句以及函数[个人推荐]
  3. Atitit.异步编程 java .net php python js 对照
  4. 按照一定策略把网页抓回到搜索引擎服务器的,SEO新手学习:搜索引擎的基本步骤...
  5. 机器学习算法—集成算法原理详解
  6. xp系统的计算机管理中用户在哪里,WINDOWSXP的用户管理和系统安全设置
  7. Leetcode--33. 搜索旋转排序数组
  8. 浙江省二级计算机vfp,浙江省计算机2级vfp程序调试真题集.doc
  9. LeetCode —— 365. 水壶问题(Python3)
  10. matlab中count是干什么,matlab编程潮流计算的count值与什么有?
  11. 走路!不要跑步!不生病的秘密!
  12. 如何测试W5300的内部TX/RX存储器?
  13. Jquery实现图片的预加载与延时加载
  14. Spring IOC容器启动整体流程
  15. C#基础笔记(第十一天)
  16. LMS自适应滤波器的FPGA实现
  17. MOOC:模式识别——贝叶斯决策理论
  18. 恢复svn服务器误删的文件,SVN删除文件及其恢复问题详解
  19. 7.Saying how you met
  20. 语音笔记APP哪个好 用它直接录音并整理很方便

热门文章

  1. java c语言union转换_C语言联合体(union)的使用方法及其本质-union
  2. c语言系统主函数流程图,C语言程序设计——成语学习系统
  3. Java Calendar 获取时间为明天的上午10点
  4. 深度学习教程 TensorFlow and Deep Learning Tutorials
  5. 让你用 Chrome 上网快到想哭:Vimium
  6. 如何理解naive Bayes
  7. OpenCV简介及图像处理示例教程
  8. boost源码剖析之:泛型指针类any之海纳百川(rev#2)
  9. 【ubuntu+opencv3】ubuntu16.04+qt5+opencv3.2.0编译与安装
  10. 设计师学习HTML/CSS之路-13