📄 winsemaphore.cc
字号:
//-----------------------------------------------------------------------------
// Torque Game Engine
// Copyright (C) GarageGames.com, Inc.
//-----------------------------------------------------------------------------
#include "platformWin32/platformWin32.h"
#include "platform/platformSemaphore.h"
void * Semaphore::createSemaphore(U32 initialCount)
{
HANDLE * semaphore = new HANDLE;
*semaphore = CreateSemaphore(0, initialCount, S32_MAX, 0);
return(semaphore);
}
void Semaphore::destroySemaphore(void * semaphore)
{
AssertFatal(semaphore, "Semaphore::destroySemaphore: invalid semaphore");
CloseHandle(*(HANDLE*)semaphore);
delete semaphore;
}
bool Semaphore::acquireSemaphore(void * semaphore, bool block)
{
AssertFatal(semaphore, "Semaphore::acquireSemaphore: invalid semaphore");
if(block)
{
WaitForSingleObject(*(HANDLE*)semaphore, INFINITE);
return(true);
}
else
{
DWORD result = WaitForSingleObject(*(HANDLE*)semaphore, 0);
return(result == WAIT_OBJECT_0);
}
}
#ifdef TGE_RPG
void Semaphore::releaseSemaphore(void * semaphore,U32 uCount)
{
AssertFatal(semaphore, "Semaphore::releaseSemaphore: invalid semaphore");
ReleaseSemaphore(*(HANDLE*)semaphore, uCount, 0);
}
#else
void Semaphore::releaseSemaphore(void * semaphore)
{
AssertFatal(semaphore, "Semaphore::releaseSemaphore: invalid semaphore");
ReleaseSemaphore(*(HANDLE*)semaphore, 1, 0);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -