锁的知识我比较贫瘠
临界区我用的更是少之又少,跟互斥量相比1.不能夸进程、2.速度快
=======CRITICAL_SECTION封装类==========
//Lock.h
#include <Windows.h>
class CFastLock
{
public:
CFastLock();
~ CFastLock();
public:
CRITICAL_SECTION m_critical_section;
};
class CLock
{
public:
void lock();
void unlock();
private:
CFastLock m_lock;
};
class CAutoLock
{
public:
CAutoLock(CLock* pLock);
virtual ~CAutoLock();
private:
CLock* m_pLock;
};
//Lock.cpp
#include "Lock.h"
CFastLock::CFastLock()
{
InitializeCriticalSection(&m_critical_section);
}
CFastLock::~CFastLock()
{
DeleteCriticalSection(&m_critical_section);
}
void CLock::lock()
{
EnterCriticalSection(&m_lock.m_critical_section);
}
void CLock::unlock()
{
LeaveCriticalSection(&m_lock.m_critical_section);
}
CAutoLock::CAutoLock(CLock* pLock)
{
m_pLock = pLock;
if(NULL != m_pLock)
m_pLock->lock();
}
CAutoLock::~CAutoLock()
{
if (NULL != m_pLock)
m_pLock->unlock();
}
//使用方法
CLock m_lock;
{
CAutoLock lock(&m_lock);
//需要加锁的代码
//执行到作用域外后,自动通过析构函数解锁
}