什么是停止线程的方式(当我直接从QThread继承)?

时间:2017-12-14 11:35:22

标签: c++ multithreading qt qthread

·H

Book = namedtuple('Book', 'name, author')
In [70]: set(dir(Book)) & namedtuple_methods
Out[70]: {'_asdict', '_fields', '_make', '_replace', '_source'}

的.cpp

#include <QThread>
#include <QDebug>

class MainWindow : public QThread
{
    Q_OBJECT

protected:
    void run()
    {
        while (1)
        {
            qDebug() << "\nsdfdsf";
        }
    }

public:
    MainWindow(QThread *parent = 0);
    ~MainWindow();
};

现在,这是一种使用线程的旧方法,我知道。 我想知道在使用方法时停止线程的方法是什么?

请显示示例。

2 个答案:

答案 0 :(得分:0)

在Qt5中,线程可以处理interrupt request (QThread::requestInterruption),因此有一种优雅而统一的方式让线程停止。

另见this answer

答案 1 :(得分:0)

最简单的方法是将while(1)替换为while(someCondition),其中someCondition可能代表一个简单的布尔变量,您调用的函数或其他任何适当的检查以确定该线程是否仍然存在跑步