在Linux系统上,QT在程序中起一个线程运行一个死循环的函数,外部通过调用控制线程启动和停止
时间: 2023-11-28 11:50:10 浏览: 88
在Linux系统上,可以使用QT的QThread类来实现多线程编程。下面是一个示例代码,其中包含一个死循环的函数,并且外部可以通过调用控制线程的启动和停止。
```c++
#include <QThread>
#include <QDebug>
class MyThread : public QThread
{
public:
MyThread();
void run();
bool m_stop;
private:
void doSomething();
};
MyThread::MyThread()
{
m_stop = false;
}
void MyThread::run()
{
while (!m_stop)
{
doSomething();
}
}
void MyThread::doSomething()
{
// 此处是一个死循环,不断执行某些操作
}
int main(int argc, char *argv[])
{
MyThread thread;
thread.start(); // 启动线程
// 等待一段时间后停止线程
QThread::msleep(5000);
thread.m_stop = true;
thread.wait(); // 等待线程结束
return 0;
}
```
在上面的示例代码中,MyThread是一个继承自QThread的自定义线程类,其中包含了一个死循环的函数doSomething()。在主函数中,我们创建了一个MyThread对象,并调用它的start()函数来启动线程。然后等待一段时间后,将线程的m_stop变量设置为true,来停止线程,并等待线程结束。
注意,在此示例中,我们使用了一个简单的布尔变量m_stop来控制线程的启动和停止。如果需要更加灵活的控制,可以考虑使用信号与槽机制或者其他线程同步方法。
阅读全文