




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在做C+的项目中发现,由于用惯了c#的lock()和java的Synchronize(),windows自带的临界区,互斥量,内核事件,信号量用起来不太习惯,于是打算自己在vc+中封装一个类似的东东。封装这个我决定采用一个临界区来做,最终的形式如下:synchronize(object)/.无论此处是否发生异常,object都能被释放掉。和c#的lock一样。不多说,开始代码。先定义一个Mutex类class Mutexpublic:Mutex(void);Mutex(void);void Lock();void UnLock();private:CRITICAL_SECTION m_criticalSection;实现如下Mutex.cpp文件#include Mutex.hMutex:Mutex(void)InitializeCriticalSection(&m_criticalSection);Mutex:Mutex(void)DeleteCriticalSection(&m_criticalSection);/保证对象被析构时候能够删除临界区void Mutex:Lock()EnterCriticalSection(&m_criticalSection);void Mutex:UnLock()LeaveCriticalSection(&m_criticalSection);在写一个Lock类来包装头文件文件/为了方便把头文件定义到了Mutex.h文件里面去了,修改Mutex.h如、/下:#define synchronized(M) for(Lock M#_lock = M; M#_lock; M#_lock.SetUnlock()/这句话后面会用到class Mutexpublic:Mutex(void);Mutex(void);void Lock();void UnLock();private:CRITICAL_SECTION m_criticalSection;class Lockpublic:Lock(Mutex &mutex);Lock(void);void SetUnlock();operator bool () const;private:Mutex &m_mutex;bool m_locked;Lock类的实现:Lock.cpp文件Code#include Mutex.hLock:Lock(Mutex &mutex): m_mutex(mutex), m_locked(true)m_mutex.Lock();Lock:Lock(void)/*一定要在析构函数中解锁,因为不管发生什么,只要对象离开他的生命周期(即离开大括号),都会调用其析构函数*/m_mutex.UnLock();void Lock:SetUnlock()m_locked = false;Lock:operator bool() constreturn m_locked;到这里算是基板上告一段落了,你可以这么用。Mutex _mutex;Lock lock(_mutex);/.在这里同步但还差一点点,我要的目标是synchronize().简单!注意Mutex.h文件里面的宏,没错!就他了!#define synchronized(M) for(Lock M#_lock = M; M#_lock; M#_lock.SetUnlock()大功告成!来测试下实际测试#include Mutex.hMutex mutex1;/我的互斥量into thread_count = 0;DWORD CALLBACK thread_proc(LPVOID params)for(int i = 0; i 10; +i)synchronized(mutex1)/这里同步!for(char c = A; c = Z; +c)printf(%c,c);Sleep(2);printf(n);thread_count-;return 0;int _tmain(int argc, _TCHAR* argv)thread_count = 4;CreateThread(0, 0, thread_proc, 0, 0, 0);CreateThread(0, 0, thread_proc, 0, 0, 0);CreateThread(0, 0, thread_proc, 0, 0, 0);CreateThread(0, 0, thread_proc, 0, 0, 0);while (thread_cou
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 城市污水处理厂智能化升级改造对城市水环境治理的促进作用报告
- 2025年生态旅游可持续发展规划与管理旅游生态旅游区旅游文化遗产保护研究报告
- 农业机械化智能化在农业生产信息化中的应用案例报告
- 聚焦2025年城市地下综合管廊建设资金申请及环境保护研究报告
- 2025年3D打印建筑一体化设计成果鉴定报告
- 2025年乡村文化旅游项目资金申请配套支持政策研究报告
- 幼儿园反恐防暴方案(模板)
- 2025年环境监测智能化发展中的数据质量控制与智能监控报告
- 收费站冬季防寒防冻安全培训
- 2025年金融租赁公司业务创新模式与风险控制体系构建实践案例报告
- 矿山建设项目应急预案及防控措施
- 北师大版一年级上册数学全册教案(教学设计)及教学反思
- 公司人效提升方案
- VTE防控管理相关制度(VTE患者管理与随访的相关管理制度)
- 2024年新人教版七年级上册英语全册课件
- 专题12名著阅读-七年级上册语文期末专项热点必刷100题(含答案)
- 职业素养-企业新型学徒制培训教材素质类-配套课件(下)
- 房屋建筑和市政基础设施工程岩土工程勘察施工图设计文件技术审查要点
- 安全文明施工奖罚明细表
- 《电机与变压器》教案
- 中医体质辨识标准(评分表)
评论
0/150
提交评论