如何在Qt中正确终止QThread?

时间:2016-06-30 07:12:36

标签: c++ multithreading qt qthread terminate

这是终止线程的正确方法......

 if(m_ReviewImageThreadLoader !=NULL)
 {
   m_ReviewImageThreadLoader->quit();
   m_ReviewImageThreadLoader->wait();
   m_ReviewImageThreadLoader->terminate();
   delete m_ReviewImageThreadLoader;
   m_ReviewImageThreadLoader = NULL;
   qDebug()<<"m_ReviewImageThreadLoader closed"<<endl;
 }

...其中m_ReviewImageThreadLoader是线程对象。

1 个答案:

答案 0 :(得分:0)

您的问题的答案在很大程度上取决于您的线程正在进行的工作的性质。如果用法类似......

QThread *m_ReviewImageThreadLoader = new QThread;
MyObject *mo = new MyObject;
mo->moveToThread(m_ReviewImageThreadLoader);
m_ReviewImageThreadLoader->start();

那么你的代码应该没问题(尽管你真的不需要调用terminate())。

另一方面,如果m_ReviewImageThreadLoaderQThread派生的类型并明确覆盖QThread::run,那么在您的问题得到解答之前,您需要提供更多信息

您是否尝试过代码?它似乎有用吗?