Qt中暂停线程的执行(主线程和工作线程共用一把锁,一旦主线程将它锁上,工作线程就无法运行了,这也是一个办法)

在线程中定义一个信号量:

QMutex pause;

把run()函数中循环执行的部分用信号量pause锁住:

  1.  
    void run()
  2.  
    {
  3.  
    while(1)
  4.  
    {
  5.  
    pause.lock();
  6.  
    //循环执行的内容,比如视频播放
  7.  
    pause.unlock();
  8.  
    }
  9.  
    }



在主线程(UI线程)中,如果想暂停线程执行,就将pause加锁:

thread->pause.lock(); //thread是线程指针

如果想继续线程,就将pause解锁:

thread->pause.unlock();

参考

Qt中暂停线程的执行

https://blog.csdn.net/masibuaa/article/details/8955162

原文地址:https://www.cnblogs.com/findumars/p/9683952.html