如何使用QThread暂停线程化工作者?

时间:2013-07-16 15:57:11

标签: multithreading qt qthread

首先,请原谅我,如果有一个明显的解决方案,我对线程的使用完全不熟悉(并且只对该理论有所了解)。

我正在开发一个我想要使用线程的应用程序。基本上,它检索数据并使用Qt实时显示在图表上。

我在how to use correctly QThread上遵循了这篇文章的指导原则,但后来我关注了一些细节。

基本上,我想实现暂停,这将停止实时查询和更新,然后可以在以后恢复。

目前,我的班级看起来像这样:

class DataProcessor : public QObject{
    Q_OBJECT

public:
    DataProcessor();
    ~DataProcessor();

//Internal details

public slots:
    //mapped to the started() signal of a QThread
    void process();

signals:
    void finished();
    void error(QString error);
}

我想知道如何实现暂停功能。在阅读了布鲁斯道森的帖子“赞美闲聊”之后,我注意到了一些我应该避免的方法(最重要的是,避免忙碌的等待)

然后,它不太适合我的需求,因为Bruce谈到等待另一个线程退出其关键部分。在这里,我只想暂停线程工作人员对用户输入所做的工作,并以相同的方式重新启动它。

我的问题是:如何为我的线程代码实现有效的暂停?

我想过在我的工作中使用一种标志,可以从主设置(像bool m_paused;),但一旦设置,我不知道我怎么能真正有效地暂停我的工人。

注意:这个问题不是我写的,但它描述了我的问题完全。资料来源:link

0 个答案:

没有答案