85 lines
1.7 KiB
C++
85 lines
1.7 KiB
C++
#pragma once
|
|
#include "il2cpp-config.h"
|
|
struct Il2CppObject;
|
|
|
|
namespace il2cpp
|
|
{
|
|
namespace vm
|
|
{
|
|
class LIBIL2CPP_CODEGEN_API Monitor
|
|
{
|
|
public:
|
|
static void Enter(Il2CppObject* object);
|
|
static bool TryEnter(Il2CppObject* object, uint32_t timeout);
|
|
static void Exit(Il2CppObject* object);
|
|
static void Pulse(Il2CppObject* object);
|
|
static void PulseAll(Il2CppObject* object);
|
|
static void Wait(Il2CppObject* object);
|
|
static bool TryWait(Il2CppObject* object, uint32_t timeout);
|
|
static bool IsAcquired(Il2CppObject* object);
|
|
static bool IsOwnedByCurrentThread(Il2CppObject* object);
|
|
};
|
|
|
|
#if !IL2CPP_SUPPORT_THREADS
|
|
|
|
inline void Monitor::Enter(Il2CppObject* object)
|
|
{
|
|
}
|
|
|
|
inline bool Monitor::TryEnter(Il2CppObject* object, uint32_t timeout)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
inline void Monitor::Exit(Il2CppObject* object)
|
|
{
|
|
}
|
|
|
|
inline void Monitor::Pulse(Il2CppObject* object)
|
|
{
|
|
}
|
|
|
|
inline void Monitor::PulseAll(Il2CppObject* object)
|
|
{
|
|
}
|
|
|
|
inline void Monitor::Wait(Il2CppObject* object)
|
|
{
|
|
}
|
|
|
|
inline bool Monitor::TryWait(Il2CppObject* object, uint32_t timeout)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
inline bool Monitor::IsAcquired(Il2CppObject* object)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
inline bool Monitor::IsOwnedByCurrentThread(Il2CppObject* object)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
#endif
|
|
|
|
struct MonitorHolder
|
|
{
|
|
MonitorHolder(Il2CppObject* obj) :
|
|
m_Object(obj)
|
|
{
|
|
Monitor::Enter(obj);
|
|
}
|
|
|
|
~MonitorHolder()
|
|
{
|
|
Monitor::Exit(m_Object);
|
|
}
|
|
|
|
private:
|
|
Il2CppObject* m_Object;
|
|
};
|
|
} /* namespace vm */
|
|
} /* namespace il2cpp */
|