码迷,mamicode.com
首页 > 其他好文 > 详细

RAII手法封装互斥锁

时间:2014-10-16 16:09:32      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   color   io   os   使用   ar   sp   

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 MutexLockGuard
36 {
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 Foo
56 {
57 public:
58     void print()
59     {
60         MutexLockGuard lock(mutex_);
61         cout << "Hello" << endl;
62     }
63 
64 private:
65     MutexLock mutex_;    
66 };

 

RAII手法封装互斥锁

标签:des   style   blog   color   io   os   使用   ar   sp   

原文地址:http://www.cnblogs.com/wendellyi/p/4028469.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!