feat(thread): add CCritSect

This commit is contained in:
fallenoak 2023-03-26 23:07:48 -05:00 committed by GitHub
parent 368c2f16c2
commit a500c34d45
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 90 additions and 0 deletions

View file

@ -0,0 +1,41 @@
#include "storm/thread/CCritSect.hpp"
CCritSect::CCritSect() {
#if defined(WHOA_SYSTEM_WIN)
InitializeCriticalSection(&this->m_critsect);
#endif
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
pthread_mutex_init(&this->m_critsect, nullptr);
#endif
}
CCritSect::~CCritSect() {
#if defined(WHOA_SYSTEM_WIN)
DeleteCriticalSection(&this->m_critsect);
#endif
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
pthread_mutex_destroy(&this->m_critsect);
#endif
}
void CCritSect::Enter() {
#if defined(WHOA_SYSTEM_WIN)
EnterCriticalSection(&this->m_critsect);
#endif
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
pthread_mutex_lock(&this->m_critsect);
#endif
}
void CCritSect::Leave() {
#if defined(WHOA_SYSTEM_WIN)
LeaveCriticalSection(&this->m_critsect);
#endif
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
pthread_mutex_unlock(&this->m_critsect);
#endif
}