ReactOS 0.4.15-dev-7924-g5949c20
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
15class Mutex
16{
17public:
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
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
71protected:
74 bool Locked;
75};
76
77
78#endif // MUTEX_H
unsigned int uint32
Definition: types.h:32
Definition: Mutex.h:16
void Unlock(void)
Definition: Mutex.h:52
bool Locked
Definition: Mutex.h:74
void Lock(void)
Definition: Mutex.h:43
bool IsLocked(void)
Definition: Mutex.h:66
Mutex()
Definition: Mutex.h:18
uint32 LockCount
Definition: Mutex.h:72
~Mutex()
Definition: Mutex.h:37
HANDLE MutexHandle
Definition: Mutex.h:73
#define NULL
Definition: types.h:112
#define CloseHandle
Definition: compat.h:739
struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES
#define INFINITE
Definition: serial.h:102
#define memset(x, y, z)
Definition: compat.h:39
LPVOID lpSecurityDescriptor
Definition: compat.h:193
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82
BOOL WINAPI DECLSPEC_HOTPATCH ReleaseMutex(IN HANDLE hMutex)
Definition: synch.c:618
#define CreateMutex
Definition: winbase.h:3756