QT多线程(0x02)-Mutex

3,285次阅读
没有评论

共计 541 个字符,预计需要花费 2 分钟才能阅读完成。

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

QT多线程(0x02)-Mutex


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

本篇文章的重点是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();//互斥量解锁
}

 

正文完
请博主喝杯咖啡吧!
post-qrcode
 
admin
版权声明:本站原创文章,由 admin 2016-05-14发表,共计541字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码