• 为了保证你在浏览本网站时有着更好的体验,建议使用类似Chrome、Firefox之类的浏览器~~
    • 如果你喜欢本站的内容何不Ctrl+D收藏一下呢,与大家一起分享各种编程知识~
    • 本网站研究机器学习、计算机视觉、模式识别~当然不局限于此,生命在于折腾,何不年轻时多折腾一下

QT多线程(0x02)-Mutex

multi-thread admin 3年前 (2016-05-14) 1456次浏览 0个评论 扫描二维码

感觉以后 QT 的学习都可以使用这样的一个系列的形式展示,这样看起来也比较方便!多线程甲壳虫又来了

55ed2f0c0001e90704000222


互斥量的概念可以参考站点中的这篇文章互斥量分析

本篇文章的重点是 QT 提供了一个 QMutexLocker 类简化了互斥量的操作,正常情况先互斥量的操作时这样的

Mutex.locker();//第一步锁定互斥量
//--测试代码开始
key++;
//测试代码结束
Mutex.unlocker();//互斥量解锁

假设出现这样的情况一个函数需要返回当前的 Key 值,也就是函数中需要提前 Return 则会出现一个问题:互斥量还是被锁住,没有解锁

 

int test()
{
     Mutex.locker();//第一步锁定互斥量
     //--测试代码开始
     key++;
     //测试代码结束
     return key;
     Mutex.unlocker();//互斥量解锁
}

因此封装了 QMutexLocker,该类接受一个 Mutex 变量并将其锁定,在函数运行结束之后,对象会被析构,这样在析构函数中释放当前的锁就可以解决上述的问题

int test()
{
     QMutexLocker.locker(Mutex);//第一步锁定互斥量
     //--测试代码开始
     key++;
     //测试代码结束
     return key;
     //Mutex.unlocker();//互斥量解锁
}

 


Deeplearn, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明QT 多线程(0x02)-Mutex
喜欢 (0)
admin
关于作者:
互联网行业码农一枚/业余铲屎官/数码影音爱好者/二次元

您必须 登录 才能发表评论!