From 3bced067a4144381e59ce4bd0eb749eeff5ad1f4 Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 28 Mar 2019 08:56:15 +0800 Subject: *misc --- source/libs/asura-lib-utils/threading/mutex.h | 33 ++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 6 deletions(-) (limited to 'source/libs/asura-lib-utils/threading/mutex.h') 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 -- cgit v1.1-26-g67d0