diff options
Diffstat (limited to 'source/libs/asura-lib-utils/threading/mutex.h')
-rw-r--r-- | source/libs/asura-lib-utils/threading/mutex.h | 33 |
1 files changed, 27 insertions, 6 deletions
diff --git a/source/libs/asura-lib-utils/threading/mutex.h b/source/libs/asura-lib-utils/threading/mutex.h index 5ed45ae..51fe63e 100644 --- a/source/libs/asura-lib-utils/threading/mutex.h +++ b/source/libs/asura-lib-utils/threading/mutex.h @@ -49,6 +49,7 @@ namespace AsuraEngine Mutex& m; }; +// ڵջӴλÿʼջΪٽ #define lock(mutex) Lock _asura_scoped_lock_0x0_(mutex) #define lock2(mutex) Lock _asura_scoped_lock_0x1_(mutex) #define lock3(mutex) Lock _asura_scoped_lock_0x2_(mutex) @@ -67,27 +68,47 @@ namespace AsuraEngine }; -#if ASURA_THREAD_WIN32 +#if ASURA_MUTEX_WIN32_CRITICLE_SECTION //https://blog.csdn.net/l799623787/article/details/18259949 - class MutexImplWin32 ASURA_FINAL : public MutexImpl + class MutexImplWin32_CS ASURA_FINAL : public MutexImpl { public: - MutexImplWin32(); - ~MutexImplWin32(); + MutexImplWin32_CS(); + ~MutexImplWin32_CS(); void Lock() override; void Unlock() override; - private: + private: //HANDLE mHandle; CRITICAL_SECTION mMutex; }; -#endif // ASURA_THREAD_WIN32 +#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 mHandle; + + }; + +#endif // ASURA_MUTEX_WIN32_KERNAL_MUTEX #if ASURA_THREAD_STD |