非线程安全对象池
来源:互联网 发布:vscode markdown 插件 编辑:程序博客网 时间:2024/05/16 17:45
今天的微博有人讨论到对象池,我想到之前项目的实现,应该用模板来实现啊,唉,还是被前人的想法给框定了,不过实现一个特别简单,花了几分钟写了个:
const int DefaultPoolSize = 1024;template <class T>class CSSObejctPool{private:queue<T*> m_OriBlock;queue<T*> m_ObjectBlock;const INT32 m_DefaultBlockSize; public:~CSSObejctPool(){while (!m_OriBlock.empty()){T* pBlock = m_OriBlock.front();delete []pBlock;m_OriBlock.pop();}}CSSObejctPool(INT32 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);}void Clear(){while (!m_ObjectBlock.empty()){T* pObject = m_ObjectBlock.front();pObject->Clear();m_ObjectBlock.pop();}queue<T*> tempBlock;while (!m_OriBlock.empty()){T* pBlock = m_OriBlock.front();for (INT32 i = 0; i < m_DefaultBlockSize; ++i){m_ObjectBlock.push(pBlock + i);}tempBlock.push(pBlock);m_OriBlock.pop();}m_ObjectBlock = tempBlock;}};
等下再实现个线程安全的。
0 0
- 非线程安全对象池
- 对象耦合的非线程安全
- 非线程/线程安全
- 线程安全、非线程安全
- 线程安全的对象池
- 线程安全与非安全
- SimpleDateFormat非线程安全
- SimpleDateFormat非线程安全
- Servlet非线程安全
- Java 非线程安全
- SimpleDateFormat 非线程安全
- ArrayList 非线程安全
- 非线程安全
- SimpleDateFormat非线程安全
- volatile---非线程安全
- SimpleDateFormat非线程安全
- Java多线程:线程安全和非线程安全的集合对象
- Java线程安全和非线程安全
- 新浪微博发送消息和授权机制原理(WeiboSDK)
- UVA 1508 - Equipment 状态压缩 枚举子集 dfs
- “集群和负载均衡”等的通俗解释
- 【hadoop入门实战】Mac上安装hadoop,并运行程序(1)
- LINUX安装ImageMagick和PHP Imagick扩展
- 非线程安全对象池
- OCP-1Z0-051-题目解析-第22题
- 关于asp.net中my97datepicker控件在回发后失效的处理方法
- java实现webservice实例
- IBM Rational Software Architect V9.0安装
- “谈谈”恋爱
- HDU3030最长上升子序列个数+树状数组求和+二分优化
- 列表选择框spinner
- 递归