MutexLock类:
class MutexLock:
{
public:
MutexLock() {
pthread_mutex_init(&m_mutex, NULL);
holder_ = 0;
}
~MutexLock() {
assert(holder_ == 0);
pthread_mutex_destroy(&m_mutex);
}
bool isLockedByThisThread() {
return holder_ == CurrentThread::tid();
}
void assertLocked() {
assert(isLockedByThisThread();
}
void lock() {
pthread_mutex_lock(&m_mutex);
holder_= CurrentThread::tid();
}
void unlock() {
holder_ = 0;
pthread_mutex_unlock(&m_mutex);
}
pthread_mutex_t*getPthreadMutex() {
return &m_mutex;
}
private:
pthread_mutex_t m_mutex;
pid_t holder_;
};
MutexLockGuard类:
#include"MutexLock.h"
class MutexGuard {
public:
MutexGuard(MutexLock &mutex):mutex_(mutex) {
mutex_.lock();
}
~MutexGuard(){
mutex_.unlock();
}
private:
MutexLock& mutex_;
};
版权声明
本文为[江南大学数字媒体技术严伟]所创,转载请带上原文链接,感谢
https://blog.csdn.net/sbsbsbsbsb_1/article/details/121686851