共计 541 个字符,预计需要花费 2 分钟才能阅读完成。
感觉以后QT的学习都可以使用这样的一个系列的形式展示,这样看起来也比较方便!多线程甲壳虫又来了
互斥量的概念可以参考站点中的这篇文章互斥量分析
本篇文章的重点是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();//互斥量解锁
}
正文完
请博主喝杯咖啡吧!