summaryrefslogtreecommitdiff
path: root/source/modules/asura-utils/threading/mutex.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/modules/asura-utils/threading/mutex.h')
-rw-r--r--source/modules/asura-utils/threading/mutex.h143
1 files changed, 71 insertions, 72 deletions
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 <asura-utils/type.h>
+#include <asura-utils/classes.h>
#include "../utils_config.h"
#if ASURA_THREAD_WIN32
- #include <windows.h>
+#include <windows.h>
#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;