📄 sh_lock.cpp
字号:
// SH_Lock.cpp: implementation of the SH_Lock class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "SH_Lock.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
SH_Lock::SH_Lock()
{
m_strName = _T("");
m_hMutex = NULL;
}
SH_Lock::SH_Lock(LPCTSTR cszName)
{
m_strName = cszName;
m_hMutex = NULL;
}
SH_Lock::~SH_Lock()
{
Close();
}
VOID SH_Lock::SetName(LPCTSTR cszName)
{
m_strName = cszName;
}
LPCTSTR SH_Lock::GetName(VOID)
{
return (LPCTSTR)m_strName;
}
BOOL SH_Lock::Create()
{
if(m_hMutex == NULL)
{
ASSERT(m_strName.GetLength() > 0);
m_hMutex = ::CreateMutex(NULL,FALSE,(LPCTSTR)m_strName);
}
return (BOOL)((m_hMutex != NULL)?TRUE:FALSE);
}
BOOL SH_Lock::Create(LPCTSTR cszName)
{
SetName(cszName);
return Create();
}
BOOL SH_Lock::Lock(DWORD dwTimeout/*=INFINITE*/)
{
if( m_hMutex == NULL)
{
if(!Create())
return FALSE;
}
if (::WaitForSingleObject(m_hMutex, dwTimeout) == WAIT_OBJECT_0)
return TRUE;
else
return FALSE;
}
BOOL SH_Lock::UnLock()
{
if(m_hMutex == NULL)
return FALSE;
return (BOOL)::ReleaseMutex(m_hMutex);
}
VOID SH_Lock::Close()
{
if(m_hMutex != NULL)
{
UnLock();
CloseHandle(m_hMutex);
m_hMutex = NULL;
}
}
const CRITICAL_SECTION SH_Lock::Initialize()
{
CRITICAL_SECTION cs;
InitializeCriticalSection(&cs);
return cs;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -