通过关键代码段实现的一个互斥锁CLock
2016-08-09 09:30
141 查看
/*******************************************************************
* Copyright(c) 2000-2030
* All rights reserved.
*
* 文件名称: CLock.h
* 简要描述: 创建锁对象的
*
* 创建日期: 2016/05/16
* 作者: xiaoge
* 说明:
*
* 修改记录:
******************************************************************/
#pragma once
#ifndef __LOCK_H__
#define __LOCK_H__
#include <windows.h>
#define SPINCOUNT_NUM 4000
class CCriticalSection
{
public:
CCriticalSection()
{
InitializeCriticalSectionAndSpinCount(&m_crtLock, SPINCOUNT_NUM);
}
~CCriticalSection()
{
LeaveCriticalSection(&m_crtLock);
}
void Lock()
{
EnterCriticalSection(&m_crtLock);
}
void UnLock()
{
LeaveCriticalSection(&m_crtLock);
}
protected:
private:
CRITICAL_SECTION
m_crtLock;
};
class CLock
{
public:
explicit CLock(CCriticalSection &csLock) :
m_csLock(csLock)
{
m_csLock.Lock();
}
~CLock()
{
m_csLock.UnLock();
}
protected:
CLock operator=(CLock&);
private:
CCriticalSection &m_csLock;
};
#endif
* Copyright(c) 2000-2030
* All rights reserved.
*
* 文件名称: CLock.h
* 简要描述: 创建锁对象的
*
* 创建日期: 2016/05/16
* 作者: xiaoge
* 说明:
*
* 修改记录:
******************************************************************/
#pragma once
#ifndef __LOCK_H__
#define __LOCK_H__
#include <windows.h>
#define SPINCOUNT_NUM 4000
class CCriticalSection
{
public:
CCriticalSection()
{
InitializeCriticalSectionAndSpinCount(&m_crtLock, SPINCOUNT_NUM);
}
~CCriticalSection()
{
LeaveCriticalSection(&m_crtLock);
}
void Lock()
{
EnterCriticalSection(&m_crtLock);
}
void UnLock()
{
LeaveCriticalSection(&m_crtLock);
}
protected:
private:
CRITICAL_SECTION
m_crtLock;
};
class CLock
{
public:
explicit CLock(CCriticalSection &csLock) :
m_csLock(csLock)
{
m_csLock.Lock();
}
~CLock()
{
m_csLock.UnLock();
}
protected:
CLock operator=(CLock&);
private:
CCriticalSection &m_csLock;
};
#endif
相关文章推荐
- [翻译] Effective C++, 3rd Edition, Item 38: 通过 composition(复合)模拟 "has-a"(有一个)或 "is-implemented-in-terms-of"(是根据……实现的)
- 通过js脚本复制网页上的一个表格的不错实现方法
- 求助哇, 我这里有一个存储过程 我想实现排序 通过判断然后 在排序 大家 请看下面的存储过程
- 一个通过BackgroundWorker实现WinForm异步操作的例子
- [原创]一个通过BackgroundWorker实现WinForm异步操作的例子
- 关键代码段的一段精彩论述:CRITICAL_SECTION就是一个厕所,抽水马桶是你要保护的数据
- 通过Sender实现多个控件使用一个事件
- 求助哇, 我这里有一个存储过程 我想实现排序 通过判断然后 在排序 大家 请看下面的存储过程
- 求助哇, 我这里有一个存储过程 我想实现排序 通过判断然后 在排序 大家 请看下面的存储过程
- 一个通过数据库镜像实现SPS 2003门户快速备份与恢复的操作手册
- 通过分层来体现 "有一个" 或 "用...来实现"
- 孙鑫VC学习笔记:第十六讲 (二) 利用关键代码段实现线程间的同步
- javascript操作两个选择列表(有两个列表,如何实现在一个列表通过双击和多选列表中内容添加到另一个列表. )
- 求助哇, 我这里有一个存储过程 我想实现排序 通过判断然后 在排序 大家 请看下面的存储过程
- 通过AEC解读WF的核心原理(七)一个实现Goto功能的Activity
- 孙鑫VC学习笔记:第十六讲 利用关键代码段实现线程间的同步
- 利用关键代码段实现线程同步
- 一个长度为10000的字符串,通过随机从a-z中抽取10000个字符组成.请用c#语言编写主要程序来实现
- 求助哇, 我这里有一个存储过程 我想实现排序 通过判断然后 在排序 大家 请看下面的存储过程
- 一个通过数据库镜像实现SPS 2003门户快速备份与恢复的操作手册