⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sh_lock.cpp

📁 rsa算法打的一个包
💻 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 + -