www.pudn.com > ResourcePool.rar > PoCCoreResourcePool.h
// PoCCoreResourcePool.h: interface for the PoCCoreResourcePool class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_POCCORERESOURCEPOOL_H) #define AFX_POCCORERESOURCEPOOL_H /******************************************************************** created: 2005/09/05 created: 5:9:2005 22:44 filename: F:\开发资料\program\c&c++\ResourcePool\PoCCoreResourcePool.h file path: F:\开发资料\program\c&c++\ResourcePool file base: PoCCoreResourcePool file ext: h author: Wu Xian Yu purpose: 资源池demo,最好能加入资源池factory *********************************************************************/ #includeusing namespace std; template class ResourceNode { public: T* resource; public: ~ResourceNode() { delete resource; }; }; template class PoCCoreResourcePool { typedef T Resource; typedef T* Resource_ptr; typedef ResourceNode Node; typedef vector Container; public: PoCCoreResourcePool(int maxCount) { m_resources = Container(maxCount); for (int i=0; i resource = new T(); m_resources[i] = pNode; } m_maxCount = maxCount; m_idleResourceIndex = 0; } virtual ~PoCCoreResourcePool() { clear(); } public: Resource_ptr GetResource() { Resource_ptr pResource=NULL; if (m_maxCount > m_idleResourceIndex) { pResource = m_resources[m_idleResourceIndex]->resource; m_idleResourceIndex++; } return pResource; } void PutResource(Resource_ptr pResource) { if (m_idleResourceIndex > 0) { m_resources[--m_idleResourceIndex]->resource = pResource; } } void clear() { m_resources.clear(); } private: Container m_resources; int m_idleResourceIndex; int m_maxCount; }; #endif