目录

官方解析

栗子


官方解析

重点如下:

1.QMutexLocker比QMutex的lock与unlock更加方便;

2.当函数生存周期结束后QMutexLocker会自动unlock;

3.如果加锁的部分抛出了异常,使用QMutex就无法unlock,而使用QMutexLocker可以到达解锁的效果;

4.QMutexLocker可以调用他传进来的QMutex对象,调用这个函数mutex();

栗子

使用原始的QMutex,抛出异常后不会进行解锁,如下代码:

#include <QString>
#include <QMutex>
#include <QDebug>//一般互斥锁都定义到.cpp内外,或者为一个成员,不会在函数中定义
QMutex mutex;void tryThrowFunction(){mutex.lock();int judgeValue = 0;switch(judgeValue){case 0:throw "error ..........";break;default:qDebug() << "switch finished!";}mutex.unlock();
}int main(void)
{try{tryThrowFunction();}catch(const char *err){qDebug() << err;}return 0;
}

运行截图如下(Qt还提示,锁没解除):

使用QMutexLocker后运行截图如下:

源码如下:

#include <QString>
#include <QMutex>
#include <QMutexLocker>
#include <QDebug>//一般互斥锁都定义到.cpp内外,或者为一个成员,不会在函数中定义
QMutex mutex;void tryThrowFunction(){QMutexLocker locker(&mutex);int judgeValue = 0;switch(judgeValue){case 0:throw "error ..........";break;default:qDebug() << "switch finished!";}}int main(void)
{try{tryThrowFunction();}catch(const char *err){qDebug() << err;}return 0;
}

Qt文档阅读笔记|Qt工作笔记-QMutexLocker的使用(抛出异常也能解锁)相关推荐

  1. Qt文档阅读笔记-共享库的创建与调用

    使用共享库的符号 这个符号可以作用在变量.类.函数中,并且这些都可以被调用端使用. 在编译共享库中,需要使用export符号.在使用端调用的时候使用import符号. 这里是本人从文档中记录的笔记,大 ...

  2. Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图

    Qt文档阅读笔记-加载HeightMap(高度图)构造3D地形图 QHeightMapSurfaceDataProxy:是Q3DSurface的一个基本代理类. 他是专门加载高度图. 高度图是没有X, ...

  3. Qt文档阅读笔记-Rotations Example相关

    Rotations Example文档阅读笔记 使用这种方式,对y轴和z轴进行旋转. QQuaternion yRotation = QQuaternion::fromAxisAndAngle(0.0 ...

  4. Qt文档阅读笔记-Q_ASSERT的另外一总用法(大佬用法)

    刚刚看到文档里面有个Q_ASSERT,好玩的用法! 普通人的用法如下: #include <QApplication> #include <QGraphicsLineItem> ...

  5. Qt文档阅读笔记-QThread::setPriority(Priority priority)官方解析及实例

    目录 官方解析 博主栗子 官方解析 QThread::setPriority(Priority priority) 这个函数为运行的线程设置了优先级.如果这个线程没有运行,那么这么函数啥事都不会做,并 ...

  6. Qt文档阅读笔记-moc工具使用及其理论(moc工具如何添加到makefile中)

    moc(Meta-Object Compiler):用于处理Qt中关于C++的扩展. moc工具读取C++头文件,看看这个头文件里面的类是不是包含Q_OBJECT宏,它会将这个头文件,转换为带有met ...

  7. Qt文档阅读笔记-Fortune Client Example实例解析

    目录 官方解析 实例代码 博主增加解析 官方解析 Fortune Client Example 以使用QTcpSocket为例子,服务端可以配合Fortune Server或Threaded Fort ...

  8. Qt文档阅读笔记-对Style Plugin Example实例的解析

    目录 前言 Style Plugin Example SimpleStylePlugin Class 定义 SimpleStylePlugin Class 实现 main()函数 The Simple ...

  9. Qt文档阅读笔记-QSet官方解析及实例

    目录 官方解析 博主栗子 官方解析 QSet类是一个模板类,他是一个哈希表集合. QSet<T>是Qt的一个普通容器类.QSet存储的值是不指明顺序的,QSet对这些值提供了快速检索的功能 ...

  10. Qt文档阅读笔记-QML Canvas的官方解析及实例

    目录 官方解析 博主例子 官方解析 Canvas可以用于画直线或曲线,简单或复杂的形状,图形,图片,并且他能加文字,颜色,阴影,和颜色梯度,和其他的装饰,可以进行低像素操作.Canvas可以保存成图像 ...

最新文章

  1. 企业级微服务框架落地
  2. python抓取简单网页_【Python3 爬虫】01_简单页面抓取
  3. .Net Discovery 系列之六--深入浅出.Net实时编译机制(下)
  4. 使用pytorch动手实现LSTM模块
  5. Spring Boot-@PropertySource注解
  6. 组件切换方式(Vue.js)
  7. 用CComPtr吧,COM接口指针很危险
  8. Python实战从入门到精通第十五讲——定义匿名或内联函数
  9. ext3,ext4,xfs和btrfs文件系统性能对比
  10. SQL注入漏洞与参数化查询
  11. keras学习率下降策略
  12. Honeywell 扫描枪安装
  13. 人人视频android app,人人视频安卓版
  14. C++ 代码实现定义法计算行列式的值
  15. qq发送消息时变成表情
  16. js的柯里化(curry)
  17. PPT文件不能编辑如何解决?
  18. cs字体样式和盒子模型学习1
  19. MySQL——插入语句
  20. 十分有用的cut剪切命令

热门文章

  1. 2008年六大创新Web技术(1)
  2. 可视化大屏设计指南,附20份可直接套用的实用模板
  3. CCleaner 2.11.636 - 系统优化和隐私保护工具
  4. 目瞪口呆!台湾豪门美女过如此奢华生活?
  5. 全球IT公司100强排行榜出炉
  6. 在 CTreeCtrl 中枚举系统中的所有窗口!(I)
  7. 前端工程师如何摆脱舒适区,持续精进?
  8. linux性能调优干货,【干货分享】详解Linux性能调优之tuned特性
  9. oracle身份管理器,分析Oracle身份管理器的各个元素(下)
  10. 快毕业才发现自己找不到工作,为什么实习经历如此重要?