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.h128
1 files changed, 0 insertions, 128 deletions
diff --git a/source/modules/asura-utils/threading/mutex.h b/source/modules/asura-utils/threading/mutex.h
deleted file mode 100644
index 623a3db..0000000
--- a/source/modules/asura-utils/threading/mutex.h
+++ /dev/null
@@ -1,128 +0,0 @@
-#ifndef __ASURA_MUTEX_H__
-#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>
-#endif
-
-namespace_begin(AsuraEngine)
-namespace_begin(Threading)
-
-#define ASURA_MUTEX_MAXWAIT (~(uint32)0)
-
-class MutexImpl;
-
-class Mutex
-{
-public:
-
- Mutex();
- ~Mutex();
-
- void Lock();
- void Unlock();
-
-private:
-
- // ֹ
- Mutex(const Mutex&);
- Mutex& operator=(const Mutex&);
-
- 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;
-};
-
-#define lock(m) \
-if(_mutex_locker _asura_mutex_locker = m){} else
-
-ASURA_ABSTRACT class MutexImpl
-{
-public:
-
- MutexImpl() {};
- virtual ~MutexImpl() {};
-
- 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:
-
- MutexImplWin32_CS();
- ~MutexImplWin32_CS();
-
- void Lock() override;
- void Unlock() override;
-
-private:
-
- //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:
-
- MutexImplWin32_KM();
- ~MutexImplWin32_KM();
-
- void Lock() override;
- void Unlock() override;
-
-private:
-
- HANDLE m_Handle;
-
-};
-
-#endif // ASURA_MUTEX_WIN32_KERNAL_MUTEX
-
-#if ASURA_THREAD_STD
-
-class MutexImplSTD ASURA_FINAL : public MutexImpl
-{
-};
-
-#endif // ASURA_THREAD_STD
-
-namespace_end
-namespace_end
-
-namespace AEThreading = AsuraEngine::Threading;
-
-#endif \ No newline at end of file