summaryrefslogtreecommitdiff
path: root/source/modules/asura-utils/Threads/Mutex.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/modules/asura-utils/Threads/Mutex.cpp')
-rw-r--r--source/modules/asura-utils/Threads/Mutex.cpp105
1 files changed, 0 insertions, 105 deletions
diff --git a/source/modules/asura-utils/Threads/Mutex.cpp b/source/modules/asura-utils/Threads/Mutex.cpp
deleted file mode 100644
index 501a0ed..0000000
--- a/source/modules/asura-utils/Threads/Mutex.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-#include <asura-utils/Exceptions/Exception.h>
-
-#include "Mutex.h"
-
-namespace_begin(AsuraEngine)
-namespace_begin(Threads)
-
-#define try_create_mutex(impl)\
-if (!m_Impl) \
-{ \
-try \
-{ \
- m_Impl = new impl(); \
-} \
-catch (Exception& e) \
-{ \
- m_Impl = nullptr; \
-} \
-}
-
-Mutex::Mutex()
- : m_Impl(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(m_Impl);
-}
-
-Mutex::~Mutex()
-{
- if(m_Impl)
- delete m_Impl;
-}
-
-void Mutex::Lock()
-{
- ASSERT(m_Impl);
-
- m_Impl->Lock();
-}
-
-void Mutex::Unlock()
-{
- ASSERT(m_Impl);
-
- m_Impl->Unlock();
-}
-
-#if ASURA_MUTEX_WIN32_CRITICLE_SECTION
-
-MutexImplWin32_CS::MutexImplWin32_CS()
-{
- ::InitializeCriticalSection(&m_Mutex);
-}
-
-MutexImplWin32_CS::~MutexImplWin32_CS()
-{
- ::DeleteCriticalSection(&m_Mutex);
-}
-
-void MutexImplWin32_CS::Lock()
-{
- ::EnterCriticalSection(&m_Mutex);
-}
-
-void MutexImplWin32_CS::Unlock()
-{
- ::LeaveCriticalSection(&m_Mutex);
-}
-
-#endif // ASURA_MUTEX_WIN32_CRITICLE_SECTION
-
-#if ASURA_MUTEX_WIN32_KERNAL_MUTEX
-
-MutexImplWin32_KM::MutexImplWin32_KM()
-{
- m_Handle = ::CreateMutex(NULL, FALSE, NULL);
- if (!m_Handle)
- throw Exception("Cant use win32 mutex.");
-}
-
-MutexImplWin32_KM::~MutexImplWin32_KM()
-{
- ::CloseHandle(m_Handle);
- m_Handle = NULL;
-}
-
-void MutexImplWin32_KM::Lock()
-{
- ::WaitForSingleObject(m_Handle, ASURA_MUTEX_MAXWAIT);
-}
-
-void MutexImplWin32_KM::Unlock()
-{
- ::ReleaseMutex(m_Handle);
-}
-
-#endif // ASURA_MUTEX_WIN32_KERNAL_MUTEX
-
-namespace_end
-namespace_end \ No newline at end of file