Files

51 lines
792 B
C
Raw Permalink Normal View History

2025-01-09 17:45:40 +08:00
#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