スレッドを閉じる方法
Qtにおいて、スレッドの終了には以下のような方法があります。
- QThreadのquit()メソッドで:QThreadでイベントループを停止し、wait()メソッドでスレッドの終了を待ちます。 例:
QThread* thread = new QThread;
...
thread->quit();
thread->wait();
- QThreadの`requestInterruption()`メソッドを使用する: QThreadの`requestInterruption()`メソッドを呼び出すとスレッドの中断が要求され、`isInterruptionRequested()`メソッドを呼び出すことで中断が要求されているかどうかを確認し、適切な位置でスレッドを終了させる。例えば:
QThread* thread = new QThread;
...
thread->requestInterruption();
while (!thread->isInterruptionRequested()) {
// 线程处理逻辑
}
- カスタムの終了フラグを使用する:スレッド関数内で終了フラグを定義し、適宜その終了フラグを検査してスレッドを終了させる。例えば:
class MyThread : public QThread {
Q_OBJECT
public:
MyThread() : m_stopFlag(false) {}
void stop() {
m_stopFlag = true;
}
protected:
void run() override {
while (!m_stopFlag) {
// 线程处理逻辑
}
}
private:
bool m_stopFlag;
};
MyThread thread;
...
thread.stop();
thread.wait();
上記はスレッドを終了する一般的な方法の一部であり、実際の使用では、特定の状況に応じて適切な方法を選択できます。