Qt有个多线程类Qthread,今天来介绍下如何使用,以及使用过程中会遇到的坑
1.创建自己的类,继承Qthread,自己实现run方法,在线程一启动就会调用run方法
class StateDataReceiver: public QThread
{
Q_OBJECT
public:
StateDataReceiver();
~StateDataReceiver();
StateDataReceiver(const StateDataReceiver&)=delete;
StateDataReceiver& operator=(const StateDataReceiver&)=delete;
public:
void run();
bool initMudule(const char* binary_name);
void setQuit(bool bQuit);
signals:
}
2.线程开启方法
m_stateDataReceiver->start();
3.实现后,在退出Qthread线程类时,需要特别注意,在上层调用类中,析构中,可参考如下做法。
if (m_stateDataReceiver)
{
m_stateDataReceiver->setQuit(true);
m_stateDataReceiver->quit();
m_stateDataReceiver->wait();
delete m_stateDataReceiver;
m_stateDataReceiver= nullptr;
}