QT线程问题
原创
©著作权归作者所有:来自51CTO博客作者mm晴朗的原创作品,请联系作者获取转载授权,否则将追究法律责任
QT线程问题
- (一)QThread
- (二)QMutex和QMutexLocker
- (end)后面会更新
(一)QThread
- 文章
(二)QMutex和QMutexLocker
- 通俗理解
-
QMutex是一把锁,如果想阻塞运行一个代码块,需要进行上锁然后解锁,这样操作比较麻烦,所以使用QMutexLocker自动解锁,可以加上{}对众多代码中的某一部分进行精确加锁
- 如果在QMutexLocker析构时,mutex仍处于加锁状态,则将会在析构函数中进行解锁处理。
QMutex mutex;
QMutexLocker locker(&mutex);
加{}
while (1)
{
sleep(1);
++count;
emit progress(((float)count/runCount)*100);
emit message(QString("Run times:%1").arg(count));
doSomeThings();
if(count==runCount)
{
break;
}
{
QMutexLocker locker(&mutex);
if(!is_CanRun)
{
return;
}
}
}
(end)后面会更新