自定义互斥锁/读写锁类
// 互斥锁类
class CAutoLeaveLocker
{
public:
CAutoLeaveLocker(void)
{
pAutoRelease = NULL;
}
CAutoLeaveLocker(pthread_mutex_t* locker)
{
pthread_mutex_lock(locker);
pAutoRelease = locker;
}
~CAutoLeaveLocker(void)
{
if (pAutoRelease)
{
pthread_mutex_unlock(pAutoRelease);
}
}
private:
pthread_mutex_t* pAutoRelease;
};
// 读写锁类
class CAutoLeaveRWLocker
{
public:
CAutoLeaveRWLocker(void)
{
pAutoRelease = NULL;
}
CAutoLeaveRWLocker(pthread_rwlock_t* locker, bool write_mode=true)
{
if( write_mode )
pthread_rwlock_wrlock(locker);
else
pthread_rwlock_rdlock(locker);
pAutoRelease = locker;
}
~CAutoLeaveRWLocker(void)
{
if (pAutoRelease)
{
pthread_rwlock_unlock(pAutoRelease);
}
}
private:
pthread_rwlock_t* pAutoRelease;
};
浙公网安备 33010602011771号