在C++中实现同步锁
来源:互联网 发布:网络舆情监测是干嘛的 编辑:程序博客网 时间:2024/06/05 07:44
from:http://c.chinaitlab.com/cc/example/200909/793526.html
在做C++的项目中发现,由于用惯了c#的lock(){}和java的Synchronize(){},windows自带的临界区,互斥量,内核事件,信号量用起来不太习惯,于是打算自己在vc++中封装一个类似的东东。封装这个我决定采用一个临界区来做,最终的形式如下:
synchronize(object)
{
//....无论此处是否发生异常,object都能被释放掉。和c#的lock一样。
}
不多说,开始代码。先定义一个Mutex类
class Mutex
{
public:
Mutex(void);
~Mutex(void);
void Lock();
void UnLock();
private:
CRITICAL_SECTION m_criticalSection;
};
实现如下
Mutex.cpp文件
#include "Mutex.h"
Mutex::Mutex(void)
{
InitializeCriticalSection(&m_criticalSection);
}
Mutex::~Mutex(void)
{
DeleteCriticalSection(&m_criticalSection);//保证对象被析构时候能够删除临界区
}
void Mutex::Lock()
{
EnterCriticalSection(&m_criticalSection);
}
void Mutex::UnLock()
{
LeaveCriticalSection(&m_criticalSection);
}
- 在C++中实现同步锁
- 在C++中实现同步锁,类似synchronize(object){....}
- 在Android中实现多线程同步
- 在Android中实现多线程同步
- 在oracle数据库中实现数据同步
- objective-c中是如何实现线程同步的?
- objective-c中是如何实现线程同步的?
- objective-c 中多线程 同步 之锁
- 在VB.NET中怎么实现多窗体同步
- 在VB.NET中怎么实现多窗体同步(1)
- 如何在SQL Server 2005中实现数据同步
- 如何在SQL Server 2005中实现数据同步
- 在Qt中如何实现QThread线程同步QFtp
- 在Golang中实现有无限容量的同步Queue
- Objective-C中是如何实现线程同步的? 网络的同步、异步区别
- 在c#中实现3层架构
- 在程序中实现自动升级(C#)
- 在C#中如何实现回车
- slerp插值的实现
- AndroidUI组件之RoomButton
- C#获取磁盘列表与信息
- column 'id' in field list is ambiguous
- 基于S3C2440的嵌入式Linux驱动——MMC/SD子系统解读(一)
- 在C++中实现同步锁
- 如何从Oracle官网上下载JavaSE和JavaEE API文档 - 201405
- C#中各类获取设备存储信息的各类方法
- makeflie_学习_0508
- URLEncode进行url传递地址的加密与解密
- 黑马程序员——Java—GUI编程
- C++课上ppt5复习 Polymorphism
- 前端工程师的修真秘籍(css、javascript和其它)
- 大数相加