まず第一に、明らかな解決策があれば許してください。私はスレッドの使用にまったく慣れていません(そして理論について少ししか知りません)。
現在、スレッドを使用するアプリケーションを開発しています。基本的には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;のようなもの)が、一度設定すると、実際にワーカーを効率的に一時停止する方法がわかりません。
注:この質問は私が書いたものではありませんが、私の問題を正確に説明しています。出典:リンク