自动加锁实现

 

    1. class Lock
    2. {
    3. public:
    4.     Lock()
    5.     {
    6.         InitializeCriticalSection( &m_Critic );  
    7.     }
    8.     ~Lock()
    9.     {
    10.         DeleteCriticalSection( &m_Critic );
    11.     }
    12.     // 
    13.     /*
    14.      *  进入临界区
    15.      */
    16.     InLock()
    17.     {              
    18.             EnterCriticalSection( &m_Critic );       
    19.     }
    20.     // 
    21.     /*
    22.      *  离开临界区
    23.      */
    24.     OutLock()
    25.     {
    26.                
    27.             LeaveCriticalSection( &m_Critic );        
    28.     }
    29. private:
    30.     CRITICAL_SECTION m_Critic; 
    31. };
    32. class AutoLock
    33. {
    34. public:
    35.     AutoLock( Lock &pLock ):m_pLock( pLock )
    36.     {
    37.         pLock.InLock();
    38.     }
    39.     ~AutoLock()
    40.     {
    41.         m_pLock.OutLock();
    42.     }
    43. private:
    44.     Lock &m_pLock;
    45. };
    46. class Test
    47. {
    48.  public:
    49.     void Do();
    50.  private:
    51.     Loack m_Lock;
    52. }
    53. void Test::Do()
    54. {
    55.    AutoLock lock( m_Lock );
    56.    ......
    57.    ......
    58. }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值