51 lines
792 B
C
51 lines
792 B
C
|
|
#ifndef _MBASE_LOCKLIST_H_
|
|||
|
|
#define _MBASE_LOCKLIST_H_
|
|||
|
|
|
|||
|
|
#include "container/vector.h"
|
|||
|
|
#include "x_lock.h"
|
|||
|
|
|
|||
|
|
namespace container
|
|||
|
|
{
|
|||
|
|
using namespace lock;
|
|||
|
|
|
|||
|
|
template <typename T>
|
|||
|
|
class LockList :
|
|||
|
|
public Vector<T>
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
typedef Vector<T> Inherited;
|
|||
|
|
typedef LockList<T> ListClass;
|
|||
|
|
private:
|
|||
|
|
Mutex *lock_;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
public:
|
|||
|
|
LockList(Mutex *lock = NULL):Inherited()
|
|||
|
|
{
|
|||
|
|
lock_ = lock;
|
|||
|
|
}
|
|||
|
|
//<2F><>ȡ<EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
inline Mutex* getLock(){ return lock_; }
|
|||
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F3A3ACBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؾɵ<D8BE><C9B5>б<EFBFBD><D0B1><EFBFBD>
|
|||
|
|
Mutex* setLock(Mutex *lock)
|
|||
|
|
{
|
|||
|
|
Mutex *pOldLock = lock_;
|
|||
|
|
lock_ = lock;
|
|||
|
|
return pOldLock;
|
|||
|
|
}
|
|||
|
|
//<2F><><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
inline void lock()
|
|||
|
|
{
|
|||
|
|
assert(lock_);
|
|||
|
|
if ( lock_ ) lock_->Lock();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD>б<EFBFBD><D0B1><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
inline void unlock()
|
|||
|
|
{
|
|||
|
|
if ( lock_ ) lock_->Unlock();
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|