Source code of Windows XP (NT5)
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.

77 lines
1.8 KiB

  1. /////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright (c) 1996-1997 Microsoft Corporation
  4. //
  5. // Module Name:
  6. // CritSec.h
  7. //
  8. // Abstract:
  9. // Definition of the CCritSec class.
  10. //
  11. // Author:
  12. // David Potter (davidp) November 18, 1997
  13. //
  14. // Revision History:
  15. //
  16. // Notes:
  17. //
  18. /////////////////////////////////////////////////////////////////////////////
  19. #ifndef __CRITSEC_H_
  20. #define __CRITSEC_H_
  21. /////////////////////////////////////////////////////////////////////////////
  22. // Forward Class Declarations
  23. /////////////////////////////////////////////////////////////////////////////
  24. class CCritSec;
  25. /////////////////////////////////////////////////////////////////////////////
  26. // External Class Declarations
  27. /////////////////////////////////////////////////////////////////////////////
  28. /////////////////////////////////////////////////////////////////////////////
  29. // Include Files
  30. /////////////////////////////////////////////////////////////////////////////
  31. /////////////////////////////////////////////////////////////////////////////
  32. // class CCritSec
  33. /////////////////////////////////////////////////////////////////////////////
  34. class CCritSec
  35. {
  36. protected:
  37. CRITICAL_SECTION m_critsec; // Critical section data.
  38. public:
  39. CCritSec(void)
  40. {
  41. InitializeCriticalSection(&m_critsec);
  42. }
  43. ~CCritSec(void)
  44. {
  45. // Make sure no one is holding the critical section
  46. // before we delete it.
  47. Lock();
  48. Unlock();
  49. DeleteCriticalSection(&m_critsec);
  50. }
  51. // Acquire the critical section
  52. void Lock(void)
  53. {
  54. EnterCriticalSection(&m_critsec);
  55. }
  56. // Release the critical section
  57. void Unlock(void)
  58. {
  59. LeaveCriticalSection(&m_critsec);
  60. }
  61. }; //*** class CCritSec
  62. /////////////////////////////////////////////////////////////////////////////
  63. #endif // __CRITSEC_H_