ltlock.cpp

来自「一个SGIP网关的程序源码.vc代码」· C++ 代码 · 共 61 行

CPP
61
字号
// LTLock.cpp: implementation of the CLTLock class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "LTLock.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CLTLock::CLTLock()
{
	::InitializeCriticalSection(&mLock);
	mnLockCount = 0;
}

CLTLock::~CLTLock()
{
	ReleaseLock();
}

BOOL CLTLock::Lock()
{
	if( mnLockCount < 0 )
		return FALSE;

	::EnterCriticalSection(&mLock);
	mnLockCount++;
	return TRUE;
}
BOOL CLTLock::Unlock()
{
	if( mnLockCount <= 0 )
		return FALSE;
	::LeaveCriticalSection(&mLock);
	mnLockCount--;
	return TRUE;
}
void CLTLock::ReleaseLock()
{
	if( mnLockCount < 0 )
		return;
	while( mnLockCount > 0 )
		Sleep(50);
	::DeleteCriticalSection(&mLock);
	mnLockCount = -1;
}
void CLTLock::ResetLock()
{
	ReleaseLock();

	::InitializeCriticalSection(&mLock);
	mnLockCount = 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?