Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1759519
  • 博文数量: 198
  • 博客积分: 4088
  • 博客等级: 上校
  • 技术积分: 2391
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-15 16:29
个人简介

游戏开发,系统架构; 博客迁移到:http://www.jianshu.com/u/3ac0504b3b8c

文章分类

全部博文(198)

文章存档

2017年(1)

2016年(12)

2015年(1)

2014年(3)

2013年(13)

2012年(18)

2011年(150)

分类: LINUX

2011-08-27 23:03:53

  1. /*File: AutoMutexLock.h
  2.  *Author:
  3.  *Date: 2011-8-25
  4.  */
  5. //////////////////////////////////////////////////////////

  6. #ifndef _AUTOMUTEXLOCK_H_
  7. #define _AUTOMUTEXLOCK_H_

  8. #include

  9. class CAutoMutex
  10. {
  11.     public:
  12.         CAutoMutex();
  13.         ~CAutoMutex();
  14.         void Lock();
  15.         void Unlock();
  16.     private:
  17.         pthread_mutex_t m_Mutex;
  18. };


  19. class CAutoMutexLock
  20. {
  21.     public:
  22.         CAutoMutexLock(CAutoMutex *pMutex);
  23.         ~CAutoMutexLock(void);
  24.     
  25.     private:
  26.         CAutoMutex* m_pMutex;
  27. };


  28. #endif

源文件

  1. //////////////////////////////////////////////////////
  2. //File: AutoMutexLock.cc
  3. /////////////////////////////////////////////////////

  4. #include "AutoMutexLock.h"

  5. /////////////////////////////////////////////////////
  6. //CAutoMutex
  7. ////////////////////////////////////////////////////
  8. CAutoMutex::CAutoMutex()
  9. {
  10.     pthread_mutexattr_t ma;
  11.     pthread_mutexattr_init(&ma);
  12.     pthread_mutexattr_settype(&ma, PTHREAD_MUTEX_RECURSIVE_NP);

  13.     pthread_mutex_init(&m_Mutex, &ma);
  14.     pthread_mutexattr_destroy(&ma);
  15. }

  16. CAutoMutex::~CAutoMutex()
  17. {
  18.     pthread_mutex_destroy(&m_Mutex);
  19. }

  20. void CAutoMutex::Lock()
  21. {
  22.     pthread_mutex_lock(&m_Mutex);
  23. }

  24. void CAutoMutex::Unlock()
  25. {
  26.     pthread_mutex_unlock(&m_Mutex);
  27. }


  28. /////////////////////////////////////////////////////
  29. //CAutoMutexLock
  30. /////////////////////////////////////////////////////

  31. CAutoMutexLock::CAutoMutexLock(CAutoMutex *pMutex)
  32. {
  33.     m_pMutex = pMutex;
  34.     if(m_pMutex)
  35.     {
  36.         m_pMutex->Lock();
  37.     }
  38. }

  39. CAutoMutexLock::~CAutoMutexLock()
  40. {
  41.     if(m_pMutex)
  42.     {
  43.         m_pMutex->Unlock();
  44.     }
  45. }

 

 

阅读(1326) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~