1)一个模板类的对象池,
template<class T>
class ObjPool
{
public:
ObjPool(BOOL bThreadSafe=TRUE)
{
}
~ObjPool( VOID )
{
}
BOOL Init( INT nMaxCount = 10 )
{
new 对象m_papObj
。。。。
return TRUE;
}
T* NewObj( VOID )
{
POOL_LOCK();
if ( m_nPosition >= m_nMaxCount )
{
ReSize();
}
取得pos的对象
同时在obj中记录在pool中的index
。。。。
POOL_UNLOCK();
return pObj;
}
VOID DeleteObj( UINT uDelIndex )
{
POOL_LOCK();
if (uDelIndex >= (UINT)m_nPosition )
{
POOL_UNLOCK();
return ;
}
。。。。。。。
POOL_UNLOCK();
}
VOID DeleteObj( T *pObj )
{
。。。。。。。。。
}
INT PoolSize()
{
return m_nMaxCount;
}
INT GetCount( VOID )const
{
return m_nPosition;
}
VOID ReSize()
{
}
private:
T **m_papObj;
INT m_nMaxCount;
INT m_nPosition;
BOOL m_bThreadSafe;
MyLock m_Lock;
};
2)在new和delete时要考虑线程安全问题