LearnWithTouch/App/LearnWithTouch_ios/Libraries/libil2cpp/include/os/Win32/MutexImpl.h
2019-07-01 14:33:21 +02:00

64 lines
1.1 KiB
C++

#pragma once
#if IL2CPP_THREADS_WIN32
#include "os/ErrorCodes.h"
#include "os/WaitStatus.h"
#include "utils/NonCopyable.h"
#include "WindowsHeaders.h"
namespace il2cpp
{
namespace os
{
class MutexImpl : public il2cpp::utils::NonCopyable
{
public:
MutexImpl();
~MutexImpl();
void Lock(bool interruptible);
bool TryLock(uint32_t milliseconds, bool interruptible);
void Unlock();
private:
HANDLE m_MutexHandle;
};
class FastMutexImpl
{
public:
FastMutexImpl()
{
InitializeCriticalSection(&m_CritialSection);
}
~FastMutexImpl()
{
DeleteCriticalSection(&m_CritialSection);
}
void Lock()
{
EnterCriticalSection(&m_CritialSection);
}
void Unlock()
{
LeaveCriticalSection(&m_CritialSection);
}
CRITICAL_SECTION* GetOSHandle()
{
return &m_CritialSection;
}
private:
CRITICAL_SECTION m_CritialSection;
};
}
}
#endif