0
いつでも安全に停止できるように、管理可能なバックグラウンドスレッドをいくつか実行する必要があります。スレッドはいくつかの繰り返し可能な作業を行う必要があります。 QThreadで管理可能なバックグラウンドスレッドを実行する適切な方法
は私がマニュアルを読み、私が見つけることができる最良の方法は、QThreadのサブクラスを作成し、実行を再実装する()メソッドである:私は別のスレッドでコードを実行することができますし、私は必要がないので、私はこれが好きclass BackgroundThread: public QThread
{
Q_OBJECT
virtual void run() Q_DECL_OVERRIDE
{
while (true)
{
// do some routine task
// sleep ...
}
}
};
moveToThreadで不都合なQtマジックを行い、スレッドリソースを適切に管理するために最大10個のシグナル/スロットを接続します。
問題は、スレッドを安全に停止する方法が見つからないことです。私は、実行のランダムな場所で終了したくないので、次回の繰り返しが終わると停止するようにしたいと思います。これを実現する唯一の方法は、スレッドクラスに原子フラグを追加し、それを停止する必要があるときにメインスレッドから設定することですが、実際にはこの解決策が嫌いです。
Qt5を使用して管理可能なバックグラウンドスレッドを実装する最良の方法は何ですか?
ループの代わりにsetTimer(0)を試すことができます – user1887915