Badminton-Scoreboard/Libraries/libil2cpp/include/os/Posix/ReaderWriterLockImpl.h
2023-10-08 10:24:48 +08:00

71 lines
1.4 KiB
C++

#pragma once
#include "il2cpp-config.h"
#if IL2CPP_THREADS_PTHREAD && IL2CPP_SUPPORT_THREADS
#include <pthread.h>
namespace il2cpp
{
namespace os
{
class ReaderWriterLockImpl
{
public:
ReaderWriterLockImpl()
{
int result = pthread_rwlock_init(&m_Lock, NULL);
NO_UNUSED_WARNING(result);
IL2CPP_ASSERT(result == 0);
}
~ReaderWriterLockImpl()
{
int result = pthread_rwlock_destroy(&m_Lock);
NO_UNUSED_WARNING(result);
IL2CPP_ASSERT(result == 0);
}
void LockExclusive()
{
int result = pthread_rwlock_wrlock(&m_Lock);
NO_UNUSED_WARNING(result);
IL2CPP_ASSERT(result == 0);
}
void LockShared()
{
int result = pthread_rwlock_rdlock(&m_Lock);
NO_UNUSED_WARNING(result);
IL2CPP_ASSERT(result == 0);
}
void ReleaseExclusive()
{
int result = pthread_rwlock_unlock(&m_Lock);
NO_UNUSED_WARNING(result);
IL2CPP_ASSERT(result == 0);
}
void ReleaseShared()
{
int result = pthread_rwlock_unlock(&m_Lock);
NO_UNUSED_WARNING(result);
IL2CPP_ASSERT(result == 0);
}
pthread_rwlock_t* GetOSHandle()
{
return &m_Lock;
}
private:
pthread_rwlock_t m_Lock;
};
}
}
#endif