My Project
Mutex.h
1 #pragma once
2 
3 class Mutex {
4  CRITICAL_SECTION cs;
5 public:
6  Mutex() { InitializeCriticalSection(&cs); }
7  ~Mutex() { DeleteCriticalSection(&cs); }
8 
9  void m_lock() { EnterCriticalSection(&cs); }
10  void m_unlock() { LeaveCriticalSection(&cs); }
11 };
12 
13 
14 class Lock {
15  Mutex &m;
16  BOOL bLocked;
17 
18 public:
19  Lock(Mutex *pMutex)
20  : m(*pMutex), bLocked(TRUE)
21  {
22  m.m_lock();
23  }
24 
25  Lock(Mutex &input_m)
26  : m(input_m), bLocked(TRUE)
27  {
28  m.m_lock();
29  }
30  ~Lock() { if (bLocked) unlock(); }
31 
32  void lock() {
33  if (!bLocked) {
34  bLocked = TRUE;
35  m.m_lock();
36  }
37  }
38  void unlock() {
39  if (bLocked) {
40  bLocked = FALSE;
41  m.m_unlock();
42  }
43  }
44 
45  BOOL islocked() const { return bLocked; }
46 };
47 
Definition: Mutex.h:14
Definition: Mutex.h:3