diff options
Diffstat (limited to 'Client/Source/Threading/Mutex.h')
-rw-r--r-- | Client/Source/Threading/Mutex.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/Client/Source/Threading/Mutex.h b/Client/Source/Threading/Mutex.h new file mode 100644 index 0000000..eed69aa --- /dev/null +++ b/Client/Source/Threading/Mutex.h @@ -0,0 +1,39 @@ +#pragma once +#include <windows.h> + +class Mutex +{ +public: + Mutex(); + ~Mutex(); + + void LockSelf(); + void UnlockSelf(); + +private: + HANDLE m_Handle; + +}; + + +class MutexLocker +{ +public: + MutexLocker(Mutex& mutex) + : m(mutex) + { + m.LockSelf(); + }; + ~MutexLocker() + { + m.UnlockSelf(); + } + operator bool() { return false; }; +private: + void* operator new(size_t); + Mutex& m; +}; + +#define Lock(m) \ +if(MutexLocker lock_##m = m){} else + |