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 の投稿を読んだ後、怠惰を賞賛して、私が避けるべきいくつかの方法を書き留めました (最も重要なのは、忙しい待機を避けることです)。

次に、別のスレッドがクリティカル セクションを終了するのを待つことについて Bruce が話しているように、それは私のニーズに完全には適合しません。ここでは、スレッドのワーカーがユーザー入力で行った作業を一時停止し、同じ方法で再開したいだけです。

私の質問は、スレッド化されたコードに効率的な一時停止を実装するにはどうすればよいですか?

メインから設定できる一種のフラグをワーカーで使用することを考えました(bool m_paused;のようなもの)が、一度設定すると、実際にワーカーを効率的に一時停止する方法がわかりません。

:この質問は私が書いたものではありませんが、私の問題を正確に説明しています。出典:リンク

4

0 に答える 0