ReactOS  0.4.12-dev-916-gffc4e30
Mutex.h
Go to the documentation of this file.
1 /*****************************************************************************
2 
3  Mutex
4 
5 *****************************************************************************/
6 
7 
8 #ifndef MUTEX_H
9 #define MUTEX_H
10 
11 
12 #include "Unfrag.h"
13 
14 
15 class Mutex
16 {
17 public:
18  Mutex ()
19  {
20  // NT only code begin ... Win9x disregards this part
21  SECURITY_ATTRIBUTES MutexAttribs;
22 
23  memset (&MutexAttribs, 0, sizeof (SECURITY_ATTRIBUTES));
24 
25  MutexAttribs.bInheritHandle = false;
26  MutexAttribs.nLength = sizeof (SECURITY_ATTRIBUTES);
27  MutexAttribs.lpSecurityDescriptor = NULL;
28  // NT only code end
29 
30  Locked = false;
31  LockCount = 0;
32  MutexHandle = CreateMutex (&MutexAttribs, Locked, NULL);
33 
34  return;
35  }
36 
37  ~Mutex ()
38  {
39  Lock ();
41  }
42 
43  void Lock (void)
44  {
45  Locked = true;
47  LockCount += 1;
48  return;
49  }
50 
51 
52  void Unlock (void)
53  {
54  LockCount -= 1;
55  if (LockCount <= 0)
56  {
57  LockCount = 0;
58  Locked = false;
59  }
60 
62  return;
63  }
64 
65 
66  bool IsLocked (void)
67  {
68  return (Locked);
69  }
70 
71 protected:
74  bool Locked;
75 };
76 
77 
78 #endif // MUTEX_H
Mutex()
Definition: Mutex.h:18
#define CloseHandle
Definition: compat.h:398
unsigned int uint32
Definition: types.h:32
Definition: Mutex.h:15
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82
void Unlock(void)
Definition: Mutex.h:52
uint32 LockCount
Definition: Mutex.h:72
~Mutex()
Definition: Mutex.h:37
smooth NULL
Definition: ftsmooth.c:416
#define CreateMutex
Definition: winbase.h:3570
HANDLE MutexHandle
Definition: Mutex.h:73
void Lock(void)
Definition: Mutex.h:43
BOOL WINAPI DECLSPEC_HOTPATCH ReleaseMutex(IN HANDLE hMutex)
Definition: synch.c:564
LPVOID lpSecurityDescriptor
Definition: compat.h:181
bool IsLocked(void)
Definition: Mutex.h:66
#define INFINITE
Definition: serial.h:102
#define memset(x, y, z)
Definition: compat.h:39
bool Locked
Definition: Mutex.h:74
struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES