diff options
| author | Stefan Boberg <[email protected]> | 2021-09-15 19:49:20 +0200 |
|---|---|---|
| committer | Stefan Boberg <[email protected]> | 2021-09-15 19:49:20 +0200 |
| commit | 83ccd52321a23c8f1c8a3228cbbf34b8f199a22b (patch) | |
| tree | 9cf1fb68651f616aef2fa28000e4f328ef9204d8 /zencore/thread.cpp | |
| parent | Added GetSize/GetData functions to reduce cognitive load and bridge the gap b... (diff) | |
| parent | Tweaked logging to streamline access, and simplified setup code for new loggers (diff) | |
| download | zen-83ccd52321a23c8f1c8a3228cbbf34b8f199a22b.tar.xz zen-83ccd52321a23c8f1c8a3228cbbf34b8f199a22b.zip | |
Merge branch 'main' into cbpackage-update
Diffstat (limited to 'zencore/thread.cpp')
| -rw-r--r-- | zencore/thread.cpp | 32 |
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 } ////////////////////////////////////////////////////////////////////////// |