设为首页 加入收藏

TOP

非线程安全对象池
2015-07-24 05:51:16 来源: 作者: 【 】 浏览:4
Tags:线程 安全 对象

今天的微博有人讨论到对象池,我想到之前项目的实现,应该用模板来实现啊,唉,还是被前人的想法给框定了,不过实现一个特别简单,花了几分钟写了个:

#include 
  
   
#include 
   
     using namespace std; const int DefaultPoolSize = 1024; template 
    
      class ObejctPool{ private: queue
     
       m_OriBlock; queue
      
        m_ObjectBlock; const int m_DefaultBlockSize; public: ~ObejctPool(){ while (!m_OriBlock.empty()){ T* pBlock = m_OriBlock.front(); delete []pBlock; m_OriBlock.pop(); } } ObejctPool(int blockSize = DefaultPoolSize):m_DefaultBlockSize(blockSize){ } T* GetObject(){ if (true == m_ObjectBlock.empty()){ T* pNewObject = new T[m_DefaultBlockSize]; m_OriBlock.push(pNewObject); for (int i = 0; i < m_DefaultBlockSize; ++i){ m_ObjectBlock.push(pNewObject+i); } } T* pGetObject = m_ObjectBlock.front(); m_ObjectBlock.pop(); return pGetObject; } void ReleaseObejct(T* pObject){ if (0 == pObject){ return; } m_ObjectBlock.push(pObject); } }; int main(){ ObejctPool
       
         obj; int* p = obj.GetObject(); *p = 1; printf("get:%d\n", *p); obj.ReleaseObejct(p); }
       
      
     
    
   
  



等下再实现个线程安全的。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Permutations 下一篇hdu 4612 Warm up 双连通缩点+树..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: