Files
RedHotRoast-ios/HybridCLRData/LocalIl2CppData-OSXEditor/il2cpp/libil2cpp/os/Win32/ConditionVariableImpl.cpp
T
2026-07-17 14:03:00 +08:00

46 lines
1.1 KiB
C++

#include "os/c-api/il2cpp-config-platforms.h"
#if IL2CPP_THREADS_WIN32 && !RUNTIME_TINY
#include "WindowsHeaders.h"
#include "os/Win32/MutexImpl.h"
#include "ConditionVariableImpl.h"
#include "WindowsHelpers.h"
namespace il2cpp
{
namespace os
{
ConditionVariableImpl::ConditionVariableImpl()
{
::InitializeConditionVariable(&m_ConditionVariable);
}
ConditionVariableImpl::~ConditionVariableImpl()
{
/* Beauty of win32 API: do not destroy it */
}
int ConditionVariableImpl::Wait(FastMutexImpl* lock)
{
return ::SleepConditionVariableCS(&m_ConditionVariable, lock->GetOSHandle(), INFINITE) ? 0 : 1;
}
int ConditionVariableImpl::TimedWait(FastMutexImpl* lock, uint32_t timeout_ms)
{
return ::SleepConditionVariableCS(&m_ConditionVariable, lock->GetOSHandle(), timeout_ms) ? 0 : 1;
}
void ConditionVariableImpl::Broadcast()
{
::WakeAllConditionVariable(&m_ConditionVariable);
}
void ConditionVariableImpl::Signal()
{
::WakeConditionVariable(&m_ConditionVariable);
}
}
}
#endif