QT多线程(0x02)-Mutex

1,986次阅读次阅读
没有评论

感觉以后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();//互斥量解锁
}

 

admin
版权声明:本站原创文章,由admin2016-05-14发表,共计1151字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)