winsemaphore.cc

来自「五行MMORPG引擎系统V1.0」· CC 代码 · 共 56 行

CC
56
字号
//-----------------------------------------------------------------------------
// 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 + =
减小字号Ctrl + -
显示快捷键?