CriticalSection.cpp
上传用户:liguizhu
上传日期:2015-11-01
资源大小:2422k
文件大小:1k
源码类别:

P2P编程

开发平台:

Visual C++

  1. #include "StdAfx.h"
  2. #include "CriticalSection.h"
  3. ///////////////////////////////////////////////////////////////////////////////
  4. // CriticalSection
  5. ///////////////////////////////////////////////////////////////////////////////
  6. CriticalSection::CriticalSection()
  7. {
  8.    ::InitializeCriticalSection(&m_crit);
  9. }
  10.       
  11. CriticalSection::~CriticalSection()
  12. {
  13.    ::DeleteCriticalSection(&m_crit);
  14. }
  15. #if(_WIN32_WINNT >= 0x0400)
  16. bool CriticalSection::TryEnter()
  17. {
  18.    return BOOL_to_bool(::TryEnterCriticalSection(&m_crit));
  19. }
  20. #endif
  21. void CriticalSection::Enter()
  22. {
  23.    ::EnterCriticalSection(&m_crit);
  24. }
  25. void CriticalSection::Leave()
  26. {
  27.    ::LeaveCriticalSection(&m_crit);
  28. }
  29. ///////////////////////////////////////////////////////////////////////////////
  30. // CriticalSection::Owner
  31. ///////////////////////////////////////////////////////////////////////////////
  32. CriticalSection::Owner::Owner(
  33.    CriticalSection &crit)
  34.    : m_crit(crit)
  35. {
  36.    m_crit.Enter();
  37. }
  38. CriticalSection::Owner::~Owner()
  39. {
  40.    m_crit.Leave();
  41. }