需要说明的就是初始化的时候指定的是内存池分配内存块的大小,而且内存池是非线程安全的,多线程要加锁
#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()-&