aboutsummaryrefslogtreecommitdiff
path: root/zencore/thread.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'zencore/thread.cpp')
-rw-r--r--zencore/thread.cpp32
1 files changed, 30 insertions, 2 deletions
diff --git a/zencore/thread.cpp b/zencore/thread.cpp
index fa9da0258..598466bb4 100644
--- a/zencore/thread.cpp
+++ b/zencore/thread.cpp
@@ -5,33 +5,53 @@
#include <fmt/format.h>
#include <zencore/except.h>
#include <zencore/string.h>
-#include <zencore/windows.h>
-#include <thread>
+
+#if ZEN_PLATFORM_WINDOWS
+# include <zencore/windows.h>
+#elif ZEN_PLATFORM_LINUX
+# include <unistd.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()
@@ -253,13 +273,21 @@ IsProcessRunning(int pid)
int
GetCurrentProcessId()
{
+#if ZEN_PLATFORM_WINDOWS
return ::GetCurrentProcessId();
+#else
+ return getpid();
+#endif
}
void
Sleep(int ms)
{
+#if ZEN_PLATFORM_WINDOWS
::Sleep(ms);
+#else
+ usleep(ms * 1000U);
+#endif
}
//////////////////////////////////////////////////////////////////////////