📄 criticalsection.h
字号:
/************************************************************************
模快名: moxu 公共类库
功能: 对CRITICAL_SECTION的简单封装
完成日期: 2007-10-20
作者: 许 培 Xu Pei(Email/MSN: peimoxu@163.com)
本代码可以自由使用,但因使用本代码造成的后果,本人不承担任何责任
************************************************************************/
#pragma once
#include <Windows.h>
#include "Exception.h"
namespace moxu
{
class CriticalSection
{
private:
CRITICAL_SECTION m_cs;
volatile bool m_state;
public:
CriticalSection(int spinCount = 0) : m_state(true)
{
if(!InitializeCriticalSectionAndSpinCount(&m_cs, spinCount))
m_state = false;
}
~CriticalSection(void)
{
DeleteCriticalSection(&m_cs);
}
bool Lock()
{
if(!m_state) return false;
EnterCriticalSection(&m_cs);
return true;
}
bool UnLock()
{
if(!m_state) return false;
LeaveCriticalSection(&m_cs);
return true;
}
};
//////////////////////////////////////////////////////////////////////////
class ScopedLock
{
private:
CriticalSection& m_rCs;
public:
ScopedLock(CriticalSection& cs) : m_rCs(cs){ m_rCs.Lock(); }
~ScopedLock(){ m_rCs.UnLock(); }
};
}//namespace moxu
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -