diff options
Diffstat (limited to 'source/modules/asura-utils/threading/mutex.cpp')
-rw-r--r-- | source/modules/asura-utils/threading/mutex.cpp | 154 |
1 files changed, 76 insertions, 78 deletions
diff --git a/source/modules/asura-utils/threading/mutex.cpp b/source/modules/asura-utils/threading/mutex.cpp index a36af1b..ff0b3fa 100644 --- a/source/modules/asura-utils/threading/mutex.cpp +++ b/source/modules/asura-utils/threading/mutex.cpp @@ -2,106 +2,104 @@ #include "mutex.h" -namespace AsuraEngine -{ - namespace Threading - { +namespace_begin(AsuraEngine) +namespace_begin(Threading) #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 (!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); + try_create_mutex(MutexImplWin32_CS); #endif #if ASURA_MUTEX_WIN32_KERNAL_MUTEX - try_create_mutex(MutexImplWin32_KM); + try_create_mutex(MutexImplWin32_KM); #endif - ASSERT(m_Impl); - } + ASSERT(m_Impl); +} - Mutex::~Mutex() - { - if(m_Impl) - delete m_Impl; - } +Mutex::~Mutex() +{ + if(m_Impl) + delete m_Impl; +} - void Mutex::Lock() - { - ASSERT(m_Impl); +void Mutex::Lock() +{ + ASSERT(m_Impl); - m_Impl->Lock(); - } + m_Impl->Lock(); +} - void Mutex::Unlock() - { - ASSERT(m_Impl); +void Mutex::Unlock() +{ + ASSERT(m_Impl); - m_Impl->Unlock(); - } + m_Impl->Unlock(); +} #if ASURA_MUTEX_WIN32_CRITICLE_SECTION - MutexImplWin32_CS::MutexImplWin32_CS() - { - ::InitializeCriticalSection(&m_Mutex); - } +MutexImplWin32_CS::MutexImplWin32_CS() +{ + ::InitializeCriticalSection(&m_Mutex); +} - MutexImplWin32_CS::~MutexImplWin32_CS() - { - ::DeleteCriticalSection(&m_Mutex); - } +MutexImplWin32_CS::~MutexImplWin32_CS() +{ + ::DeleteCriticalSection(&m_Mutex); +} - void MutexImplWin32_CS::Lock() - { - ::EnterCriticalSection(&m_Mutex); - } +void MutexImplWin32_CS::Lock() +{ + ::EnterCriticalSection(&m_Mutex); +} - void MutexImplWin32_CS::Unlock() - { - ::LeaveCriticalSection(&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); - } +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 - } -}
\ No newline at end of file +namespace_end +namespace_end
\ No newline at end of file |