CSingleLock使用方法
来源:互联网 发布:绘影绘声 mac 编辑:程序博客网 时间:2024/06/04 01:08
先上实例代码:
class CDataArray{private: int iArray[10]; CMutex Mutex;CCriticalSection CritSection;public: CDataArray(){}; ~CDataArray(){}; void SetData(int iValue); void GetDataArray(int aArray[10]);};void CDataArray::SetData(int iValue){ CSingleLock SingleLock(&Mutex);//方法一 //CSingleLock SingleLock(&CritSection); 方法二 SingleLock.Lock(); if(SingleLock.IsLocked()){ for (int i=0;i<10;i++) iArray[i]=iValue; } Lock.Unlock();//此步也可以进行省略}void CDataArray::GetDataArray(int aArray[10]){ CSingleLock SingleLock(&Mutex);//方法一 //CSingleLock SingleLock(&CritSection); 方法二 SingleLock.Lock(); if(SingleLock.IsLocked()){ for (int i=0;i<10;i++) aArray[i]=iArray[i]; } Lock.Unlock();//此步也可以进行省略}
一、使用CSingleLock通过对互斥的控制达到共享资源的互斥访问;如果一个线程占正在访问互斥,那么系统将挂起当前的调用线程,直到这个互斥被释放为止,这时,被挂起的线程将被唤醒并取得对互斥的控制;一般来说使用锁需要Lock,Unlock两步,而使用CSingleLock时,只需要一步即可,即在函数内部,声明一个CSingleLock,同时指定互斥对象的指针,在函数执行完毕的时候,会自动执行CSingleLock的析构函数,从而解锁。
二、优缺点
1.防止编程时的笔误,只有Lock,没有UnLock。
2.函数异常退出时,有可能流程走不到UnLock处,会导致资源锁死,而使CSingleLock,则会在函数出栈时,自动调用CSingleLock析构函数。
3.缺点就是性能上总会有损失的,因为它多了一个构造与析构的过程,但对于普通应用来讲,优处大于缺点。
0 0
- CSingleLock使用方法
- CSingleLock的使用方法(多线程)
- CSingleLock
- CSingleLock
- CSingleLock
- CSingleLock
- CSingleLock CMultiLock
- CMutex CSingleLock
- CMutex CSingleLock
- CSingleLock CMultiLockquiet
- CSingleLock的使用注意(转)
- CSingleLock的使用注意(转)
- 在linux下实现CSingleLock函数
- CSingleLock http://bbs.csdn.net/topics/310164806
- CSingleLock::CSingleLock https://msdn.microsoft.com/zh-cn/library/fw63hszf.aspx
- 【语言-C++】多线程通同步 临界区 CCriticalSection 与 CSingleLock
- 使用方法
- 线程同步时,使用CSingleLock和CMutex配合不工作的问题
- uboot启动阶段修改启动参数方法及分析
- 安装VIm以及开始学习
- ubuntu运行故障处理(1)
- python爬虫学习
- QT自定义滑动开关
- CSingleLock使用方法
- mysql备份
- uCOS-II整理之中断和时钟
- DualGAN: Unsupervised Dual Learning for Image-to-Image Translation 阅读笔记
- 常用距离度量算法小结
- Java IO流分析整理
- Keras学习笔记(2)——多层感知机
- 在Eclipse中使用JUnit4进行单元测试(高级篇)
- php之待解决