57 lines
1.1 KiB
C++
57 lines
1.1 KiB
C++
#ifndef _MBASE_LOCKLIST_H_
|
||
#define _MBASE_LOCKLIST_H_
|
||
|
||
#include "List.h"
|
||
#include "Lock.h"
|
||
|
||
namespace wylib
|
||
{
|
||
namespace container
|
||
{
|
||
using namespace wylib::sync::lock;
|
||
|
||
template <typename T>
|
||
class CLockList :
|
||
public CBaseList<T>
|
||
{
|
||
public:
|
||
typedef CBaseList<T> Inherited;
|
||
typedef CLockList<T> ListClass;
|
||
private:
|
||
CBaseLock *m_pLock;//数据锁
|
||
public:
|
||
CLockList(CBaseLock *plock = NULL):Inherited()
|
||
{
|
||
m_pLock = plock;
|
||
}
|
||
//获取列表锁对象
|
||
inline CBaseLock* getLock(){ return m_pLock; }
|
||
//设置列表锁对象,函数返回旧的列表锁
|
||
CBaseLock* setLock(CBaseLock *pLock)
|
||
{
|
||
CBaseLock *pOldLock = m_pLock;
|
||
m_pLock = pLock;
|
||
return pOldLock;
|
||
}
|
||
//对列表加锁
|
||
inline void lock()
|
||
{
|
||
if ( m_pLock ) m_pLock->Lock();
|
||
}
|
||
//尝试对列表加锁,加锁失败则返回FALSE,否则返回TRUE
|
||
inline BOOL trylock()
|
||
{
|
||
return m_pLock ? m_pLock->TryLock() : TRUE;
|
||
}
|
||
//对列表解锁
|
||
inline void unlock()
|
||
{
|
||
if ( m_pLock ) m_pLock->Unlock();
|
||
}
|
||
};
|
||
};
|
||
};
|
||
|
||
#endif
|
||
|