原理:

标准的RAII,

利用构造函数进行加锁,利用析构函数进行解锁。

 1 #ifndef _C_LIGTHT_LOCK_HPP
 2 #define _C_LIGTHT_LOCK_HPP
 3 
 4 class CLightLock
 5     {
 6     public:
 7         CLightLock()
 8         {
 9             pthread_mutexattr_t attr;
10             pthread_mutexattr_init(&attr);
11             pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_RECURSIVE_NP);
12             pthread_mutex_init(&_lock,&attr);
13             pthread_mutexattr_destroy(&attr);
14         }
15         virtual ~CLightLock()
16         {
17             pthread_mutex_destroy(&_lock);
18         }
19         inline void lock()
20         {
21             pthread_mutex_lock(&_lock)
22         }
23         inline void unlock()
24         {
25             pthread_mutex_unlock(&_lock);
26         }
27     private:
28         CLightLock( const CLightLock& )
29         {
30         }
31         pthread_mutex_t _lock;
32     };
33 
34     template<typename LOCK>
35     class CAutoLockT
36     {
37     public:
38         inline CAutoLockT( LOCK* lock )
39             :_lock(lock)
40         {
41             _lock->lock();
42         }
43         inline CAutoLockT( LOCK& lock )
44             :_lock(&lock)
45         {
46             _lock->lock();
47         }
48         inline virtual ~CAutoLockT()
49         {
50             _lock->unlock();
51         }
52     private:
53         CAutoLockT( const CAutoLockT& )
54         {
55         }
56         LOCK* _lock;
57     };
58 
59     typedef CAutoLockT<CLightLock> CAutoLightLock;
60 }
61 
62 #endif

 

相关文章:

  • 2021-09-22
  • 2021-06-24
  • 2021-11-30
  • 2021-08-11
  • 2021-05-26
  • 2021-06-05
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-14
  • 2022-12-23
  • 2022-12-23
  • 2021-12-24
  • 2021-08-21
  • 2022-01-03
  • 2021-06-12
相关资源
相似解决方案