mirror of https://github.com/Icinga/icinga2.git
58 lines
952 B
C++
58 lines
952 B
C++
|
#include "i2-base.h"
|
||
|
|
||
|
using namespace icinga;
|
||
|
|
||
|
mutex::mutex(void)
|
||
|
{
|
||
|
#ifdef _WIN32
|
||
|
InitializeCriticalSection(&m_Mutex);
|
||
|
#else /* _WIN32 */
|
||
|
pthread_mutex_init(&m_Mutex);
|
||
|
#endif /* _WIN32 */
|
||
|
}
|
||
|
|
||
|
mutex::~mutex(void)
|
||
|
{
|
||
|
#ifdef _WIN32
|
||
|
DeleteCriticalSection(&m_Mutex);
|
||
|
#else /* _WIN32 */
|
||
|
pthread_mutex_init(&m_Mutex);
|
||
|
#endif /* _WIN32 */
|
||
|
}
|
||
|
|
||
|
bool mutex::tryenter(void)
|
||
|
{
|
||
|
#ifdef _WIN32
|
||
|
return (TryEnterCriticalSection(&m_Mutex) == TRUE);
|
||
|
#else /* _WIN32 */
|
||
|
return pthread_mutex_tryenter(&m_Mutex);
|
||
|
#endif /* _WIN32 */
|
||
|
}
|
||
|
|
||
|
void mutex::enter(void)
|
||
|
{
|
||
|
#ifdef _WIN32
|
||
|
EnterCriticalSection(&m_Mutex);
|
||
|
#else /* _WIN32 */
|
||
|
pthread_mutex_enter(&m_Mutex);
|
||
|
#endif /* _WIN32 */
|
||
|
}
|
||
|
|
||
|
void mutex::exit(void)
|
||
|
{
|
||
|
#ifdef _WIN32
|
||
|
LeaveCriticalSection(&m_Mutex);
|
||
|
#else /* _WIN32 */
|
||
|
pthread_mutex_exit(&m_Mutex);
|
||
|
#endif /* _WIN32 */
|
||
|
}
|
||
|
|
||
|
#ifdef _WIN32
|
||
|
CRITICAL_SECTION *mutex::get(void)
|
||
|
#else /* _WIN32 */
|
||
|
pthread_mutex_t *mutex::get(void)
|
||
|
#endif /* _WIN32 */
|
||
|
{
|
||
|
return &m_Mutex;
|
||
|
}
|