diff options
| author | Martin Ridgers <[email protected]> | 2021-09-15 09:03:26 +0200 |
|---|---|---|
| committer | Martin Ridgers <[email protected]> | 2021-09-15 09:03:26 +0200 |
| commit | bbe9afd7a7e19358b02d6880c4027e27fe5e8b80 (patch) | |
| tree | 073f9bd519c40f0bcd81fd568d1e9a2ef97bbf24 /zencore/thread.cpp | |
| parent | Removed unused 'thread' include (diff) | |
| download | zen-bbe9afd7a7e19358b02d6880c4027e27fe5e8b80.tar.xz zen-bbe9afd7a7e19358b02d6880c4027e27fe5e8b80.zip | |
Implemented RwLock on non-Windows platforms using std::shared_mutex
Diffstat (limited to 'zencore/thread.cpp')
| -rw-r--r-- | zencore/thread.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/zencore/thread.cpp b/zencore/thread.cpp index 03ecf3215..ffc17f79a 100644 --- a/zencore/thread.cpp +++ b/zencore/thread.cpp @@ -5,32 +5,51 @@ #include <fmt/format.h> #include <zencore/except.h> #include <zencore/string.h> -#include <zencore/windows.h> + +#if ZEN_PLATFORM_WINDOWS +# include <zencore/windows.h> +#endif namespace zen { void RwLock::AcquireShared() { +#if ZEN_PLATFORM_WINDOWS AcquireSRWLockShared((PSRWLOCK)&m_Srw); +#else + m_Mutex.lock_shared(); +#endif } void RwLock::ReleaseShared() { +#if ZEN_PLATFORM_WINDOWS ReleaseSRWLockShared((PSRWLOCK)&m_Srw); +#else + m_Mutex.unlock_shared(); +#endif } void RwLock::AcquireExclusive() { +#if ZEN_PLATFORM_WINDOWS AcquireSRWLockExclusive((PSRWLOCK)&m_Srw); +#else + m_Mutex.lock(); +#endif } void RwLock::ReleaseExclusive() { +#if ZEN_PLATFORM_WINDOWS ReleaseSRWLockExclusive((PSRWLOCK)&m_Srw); +#else + m_Mutex.unlock(); +#endif } Event::Event() |