From 084623519e95f0ab0cf4bc328b5fa736d679c5bd Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 31 Jul 2019 21:35:12 +0800 Subject: =?UTF-8?q?*=E4=BF=AE=E6=94=B9=E5=90=8D=E7=A7=B0=E7=A9=BA=E9=97=B4?= =?UTF-8?q?=E9=A3=8E=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/modules/asura-utils/threading/mutex.h | 143 +++++++++++++-------------- 1 file changed, 71 insertions(+), 72 deletions(-) (limited to 'source/modules/asura-utils/threading/mutex.h') diff --git a/source/modules/asura-utils/threading/mutex.h b/source/modules/asura-utils/threading/mutex.h index 9e9d2c2..623a3db 100644 --- a/source/modules/asura-utils/threading/mutex.h +++ b/source/modules/asura-utils/threading/mutex.h @@ -2,127 +2,126 @@ #define __ASURA_MUTEX_H__ #include +#include #include "../utils_config.h" #if ASURA_THREAD_WIN32 - #include +#include #endif -namespace AsuraEngine -{ - namespace Threading - { +namespace_begin(AsuraEngine) +namespace_begin(Threading) #define ASURA_MUTEX_MAXWAIT (~(uint32)0) - class MutexImpl; +class MutexImpl; - class Mutex - { - public: +class Mutex +{ +public: - Mutex(); - ~Mutex(); + Mutex(); + ~Mutex(); - void Lock(); - void Unlock(); + void Lock(); + void Unlock(); - private: +private: - // ½ûÖ¹¸´ÖÆ - Mutex(const Mutex&); - Mutex& operator=(const Mutex&); + // ½ûÖ¹¸´ÖÆ + Mutex(const Mutex&); + Mutex& operator=(const Mutex&); - MutexImpl* m_Impl; + MutexImpl* m_Impl; - }; +}; - class _mutex_locker - { - public: - _mutex_locker(Mutex& mutex) - : m(mutex) - { - m.Lock(); - }; - ~_mutex_locker() - { - m.Unlock(); - } - operator bool() { return false; }; - private: - void* operator new(size_t); - Mutex& m; - }; +class _mutex_locker +{ +public: + _mutex_locker(Mutex& mutex) + : m(mutex) + { + m.Lock(); + }; + ~_mutex_locker() + { + m.Unlock(); + } + operator bool() { return false; }; +private: + void* operator new(size_t); + Mutex& m; +}; #define lock(m) \ - if(_mutex_locker _asura_mutex_locker = m){} else +if(_mutex_locker _asura_mutex_locker = m){} else - ASURA_ABSTRACT class MutexImpl - { - public: +ASURA_ABSTRACT class MutexImpl +{ +public: - MutexImpl() {}; - virtual ~MutexImpl() {}; + MutexImpl() {}; + virtual ~MutexImpl() {}; - virtual void Lock() = 0; - virtual void Unlock() = 0; + virtual void Lock() = 0; + virtual void Unlock() = 0; - }; +}; #if ASURA_MUTEX_WIN32_CRITICLE_SECTION - //https://blog.csdn.net/l799623787/article/details/18259949 - class MutexImplWin32_CS ASURA_FINAL : public MutexImpl - { - public: +//https://blog.csdn.net/l799623787/article/details/18259949 +class MutexImplWin32_CS ASURA_FINAL : public MutexImpl +{ +public: - MutexImplWin32_CS(); - ~MutexImplWin32_CS(); + MutexImplWin32_CS(); + ~MutexImplWin32_CS(); - void Lock() override; - void Unlock() override; + void Lock() override; + void Unlock() override; - private: +private: - //HANDLE m_Handle; - CRITICAL_SECTION m_Mutex; + //HANDLE m_Handle; + CRITICAL_SECTION m_Mutex; - }; +}; #endif // ASURA_MUTEX_WIN32_CRITICLE_SECTION #if ASURA_MUTEX_WIN32_KERNAL_MUTEX - class MutexImplWin32_KM ASURA_FINAL : public MutexImpl - { - public: +class MutexImplWin32_KM ASURA_FINAL : public MutexImpl +{ +public: - MutexImplWin32_KM(); - ~MutexImplWin32_KM(); + MutexImplWin32_KM(); + ~MutexImplWin32_KM(); - void Lock() override; - void Unlock() override; + void Lock() override; + void Unlock() override; - private: +private: - HANDLE m_Handle; + HANDLE m_Handle; - }; +}; #endif // ASURA_MUTEX_WIN32_KERNAL_MUTEX #if ASURA_THREAD_STD - class MutexImplSTD ASURA_FINAL : public MutexImpl - { - }; +class MutexImplSTD ASURA_FINAL : public MutexImpl +{ +}; #endif // ASURA_THREAD_STD - } -} +namespace_end +namespace_end namespace AEThreading = AsuraEngine::Threading; -- cgit v1.1-26-g67d0