首页 > 代码库 > RAII手法封装互斥锁
RAII手法封装互斥锁
RAII手法是 Resource Acquisition is Initialization 的缩写,意为“资源获取即初始化”,在使用智能指针时也使用,下面是针对互斥量时的实现,
1 #include <iostream> 2 #include <pthread.h> 3 4 using namespace std; 5 6 class MutexLock 7 { 8 public: 9 MutexLock()10 {11 pthread_mutex_init(&mutex_, NULL);12 }13 14 ~MutexLock()15 {16 pthread_mutex_destroy(&mutex_);17 }18 19 void Lock()20 {21 pthread_mutex_lock(&mutex_);22 }23 24 void Unlock()25 {26 pthread_mutex_unlock(&mutex_);27 }28 29 private:30 MutexLock(const MutexLock&);31 MutexLock& operator=(const MutexLock&);32 pthread_mutex_t mutex_;33 };34 35 class MutexLockGuard36 {37 public:38 explicit MutexLockGuard(MutexLock& mutex): mutex_(mutex)39 {40 mutex_.Lock();41 }42 43 ~MutexLockGuard()44 {45 mutex_.Unlock();46 }47 48 private:49 MutexLockGuard(const MutexLockGuard&);50 MutexLockGuard& operator=(const MutexLockGuard&);51 52 MutexLock& mutex_;53 };54 55 class Foo56 {57 public:58 void print()59 {60 MutexLockGuard lock(mutex_);61 cout << "Hello" << endl;62 }63 64 private:65 MutexLock mutex_; 66 };
RAII手法封装互斥锁
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。