QT线程问题

  • ​​(一)QThread​​
  • ​​(二)QMutex和QMutexLocker​​
  • ​​(end)后面会更新​​

(一)QThread

  1. ​​文章​​

(二)QMutex和QMutexLocker

  1. ​​通俗理解​​
  2. ​​QMutex​​是一把锁,如果想阻塞运行一个代码块,需要进行上锁然后解锁,这样操作比较麻烦,所以使用QMutexLocker自动解锁,可以加上{}对众多代码中的某一部分进行精确加锁
  3. 如果在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)后面会更新