诸暨麻将添加redis
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

63 lines
1.0 KiB

  1. #include "StdAfx.h"
  2. #include "WHDataLocker.h"
  3. //////////////////////////////////////////////////////////////////////////////////
  4. //构造函数
  5. CWHDataLocker::CWHDataLocker(CCriticalSection & CriticalSection, bool bLockAtOnce)
  6. : m_CriticalSection(CriticalSection)
  7. {
  8. //设置变量
  9. m_nLockCount = 0;
  10. //锁定对象
  11. if (bLockAtOnce == true)
  12. {
  13. Lock();
  14. }
  15. return;
  16. }
  17. //析构函数
  18. CWHDataLocker::~CWHDataLocker()
  19. {
  20. //解除锁定
  21. while (m_nLockCount > 0)
  22. {
  23. UnLock();
  24. }
  25. return;
  26. }
  27. //锁定函数
  28. VOID CWHDataLocker::Lock()
  29. {
  30. //锁定对象
  31. m_CriticalSection.Lock();
  32. //设置变量
  33. m_nLockCount++;
  34. return;
  35. }
  36. //解锁函数
  37. VOID CWHDataLocker::UnLock()
  38. {
  39. //效验状态
  40. ASSERT(m_nLockCount > 0);
  41. if (m_nLockCount == 0) return;
  42. //设置变量
  43. m_nLockCount--;
  44. //解除锁定
  45. m_CriticalSection.Unlock();
  46. return;
  47. }
  48. //////////////////////////////////////////////////////////////////////////////////