65,186
社区成员




#pragma once
#include "windows.h"
class csClass
{
public:
csClass() : m_bEnable(true)
{
::InitializeCriticalSection(&m_cs);
}
~csClass()
{
::DeleteCriticalSection(&m_cs);
}
void Enable(bool b)
{
m_bEnable = b;
}
void Lock()
{
if(m_bEnable)
::EnterCriticalSection(&m_cs);
}
void Unlock()
{
if(m_bEnable)
::LeaveCriticalSection(&m_cs);
}
public:
CRITICAL_SECTION m_cs;
bool m_bEnable;
};
class csScope
{
public:
csScope(csClass* cs):m_cs(cs)
{
if(m_cs)
m_cs->Lock();
}
~csScope()
{
if(m_cs)
m_cs->Unlock();
}
protected:
csClass* m_cs;
};
// testaaa.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "csDef.h"
int _tmain(int argc, _TCHAR* argv[])
{
csClass g_cs;
for(int i=0;i<100;i++)
{
csClass Scope(g_cs);
}
int debug = 1;
return 0;
}