0

首先,如果有一个明显的解决方案,请原谅我,我对线程的使用完全陌生(并且只知道一点理论)。

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

我已经按照这篇文章中关于如何正确使用 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 Dawson 的帖子 In赞美 Idleness 之后,我注意到了一些我应该避免的方法(最重要的是,避免忙碌等待)

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

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

我曾想过在我的工人中使用一种标志,可以从主设置(类似于 bool m_paused;),但是一旦设置,我不知道如何才能有效地暂停我的工人。

注意:这个问题不是我写的,但它准确地描述了我的问题。来源:链接

4

0 回答 0