summaryrefslogtreecommitdiff
path: root/source/libs/asura-lib-utils/threading/mutex.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/libs/asura-lib-utils/threading/mutex.cpp')
-rw-r--r--source/libs/asura-lib-utils/threading/mutex.cpp106
1 files changed, 0 insertions, 106 deletions
diff --git a/source/libs/asura-lib-utils/threading/mutex.cpp b/source/libs/asura-lib-utils/threading/mutex.cpp
deleted file mode 100644
index 663ac28..0000000
--- a/source/libs/asura-lib-utils/threading/mutex.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-#include <asura-lib-utils/exceptions/exception.h>
-
-#include "mutex.h"
-
-namespace AsuraEngine
-{
- namespace Threading
- {
-
-#define try_create_mutex(impl)\
- if (!mImpl) \
- { \
- try \
- { \
- mImpl = new impl(); \
- } \
- catch (Exception& e) \
- { \
- mImpl = nullptr; \
- } \
- }
-
- Mutex::Mutex()
- : mImpl(nullptr)
- {
-#if ASURA_MUTEX_WIN32_CRITICLE_SECTION
- try_create_mutex(MutexImplWin32_CS);
-#endif
-#if ASURA_MUTEX_WIN32_KERNAL_MUTEX
- try_create_mutex(MutexImplWin32_KM);
-#endif
- ASSERT(mImpl);
- }
-
- Mutex::~Mutex()
- {
- delete mImpl;
- }
-
- void Mutex::Lock()
- {
- ASSERT(mImpl);
-
- mImpl->Lock();
- }
-
- void Mutex::Unlock()
- {
- ASSERT(mImpl);
-
- mImpl->Unlock();
- }
-
-#if ASURA_MUTEX_WIN32_CRITICLE_SECTION
-
- MutexImplWin32_CS::MutexImplWin32_CS()
- {
- ::InitializeCriticalSection(&mMutex);
- }
-
- MutexImplWin32_CS::~MutexImplWin32_CS()
- {
- ::DeleteCriticalSection(&mMutex);
- }
-
- void MutexImplWin32_CS::Lock()
- {
- ::EnterCriticalSection(&mMutex);
- }
-
- void MutexImplWin32_CS::Unlock()
- {
- ::LeaveCriticalSection(&mMutex);
- }
-
-#endif // ASURA_MUTEX_WIN32_CRITICLE_SECTION
-
-#if ASURA_MUTEX_WIN32_KERNAL_MUTEX
-
- MutexImplWin32_KM::MutexImplWin32_KM()
- {
- mHandle = ::CreateMutex(NULL, FALSE, NULL);
- if (!mHandle)
- throw Exception("Cant use win32 mutex.");
- }
-
- MutexImplWin32_KM::~MutexImplWin32_KM()
- {
- ::CloseHandle(mHandle);
- mHandle = NULL;
- }
-
- void MutexImplWin32_KM::Lock()
- {
- ::WaitForSingleObject(mHandle, INFINITE);
- }
-
- void MutexImplWin32_KM::Unlock()
- {
- ::ReleaseMutex(mHandle);
- }
-
-#endif // ASURA_MUTEX_WIN32_KERNAL_MUTEX
-
- }
-}