Files
Commonwealth-Online-Public/plugin/lib/commonlibf4/include/RE/H/hkCriticalSection.h
T
2026-05-30 18:33:24 +12:00

55 lines
870 B
C++

#pragma once
#include "RE/H/hkHardwareInfo.h"
namespace RE
{
class hkCriticalSection
{
public:
hkCriticalSection(std::int32_t a_spinCount = 0)
{
if (a_spinCount == 0)
a_spinCount = 1000 * hkHardwareInfo::CalcNumHardwareThreads();
REX::W32::InitializeCriticalSectionAndSpinCount(&m_section, a_spinCount);
}
~hkCriticalSection()
{
REX::W32::DeleteCriticalSection(&m_section);
}
void Enter()
{
REX::W32::EnterCriticalSection(&m_section);
}
void Leave()
{
REX::W32::LeaveCriticalSection(&m_section);
}
protected:
REX::W32::CRITICAL_SECTION m_section;
};
class hkCriticalSectionLock
{
public:
hkCriticalSectionLock(hkCriticalSection* a_section)
{
m_section = a_section;
m_section->Enter();
}
~hkCriticalSectionLock()
{
m_section->Leave();
}
protected:
hkCriticalSection* m_section;
};
}