• CLightLock:一个简单AutoLock


    原理:

    标准的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
  • 相关阅读:
    [荐]推荐一个shell学习的网站
    [转]linux远程登入不需要密码
    [转] eclipce使用vim 开启装逼模式
    Linux 下查找指令
    nmon 工具的使用
    LaTeX 符号大全
    vim 粘贴复制操作
    linux命令模式下如何切换首行和尾行
    fish 与oh-my-fish 的安装
    vim 粘贴复制操作
  • 原文地址:https://www.cnblogs.com/runnyu/p/cpp.html
Copyright © 2020-2023  润新知