aboutsummaryrefslogtreecommitdiff
path: root/zencore/thread.cpp
diff options
context:
space:
mode:
authorMartin Ridgers <[email protected]>2021-09-15 09:03:26 +0200
committerMartin Ridgers <[email protected]>2021-09-15 09:03:26 +0200
commitbbe9afd7a7e19358b02d6880c4027e27fe5e8b80 (patch)
tree073f9bd519c40f0bcd81fd568d1e9a2ef97bbf24 /zencore/thread.cpp
parentRemoved unused 'thread' include (diff)
downloadzen-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.cpp21
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()