質問

QThread::terminate()のドキュメントは、この関数を呼び出すことにより、スレッドを終了することが推奨されていることを述べている。
私のプログラムでは、私はそれが実行を終了する前にスレッドを終了する必要があります。スレッドには、いくつかの重い計算を実行していると私は、ユーザーが計算を停止するように制御を持っていると思います。
私の代わりにQThread::terminate()を呼び出すことをどのように行うことができますか?

役に立ちましたか?

解決

スレッド内の計算によって確認されたスレッド外部からのフラグを設定し、フラグが設定されていれば計算を停止します。

他のヒント

フラグを使用すると明らかにし、トリックを行うための最も一般的な方法ですが、あなたは、Linux / UNIXプラットフォーム上で作業している場合、私はあなたの代わりにパイプを使用することをお勧めします。私は、私は(これはコードthreadunsafeを行い、そして、そのようなフラグから生じるバグを追跡するのは難しいです)、その後、私はニードフルを行うための効率的な方法だったのパイプを使用するように実装を変更フラグを使用したのと同じ問題がありました。

あなたがしたい場合は、Linuxプラットフォームのために、私はどのようにQThreadを終了するためにパイプを使用する方法を表示することができます。

また、Windowsに私は、Windowsプラットフォームでのプログラミングの多くを行っていないとしてについて多くを知らない、パイプ、同等のものを持っていることがあります。

ホープ、このことができます。

ベストソリューションスレッドセーフになりますフラグ+ミューテックスを使用することです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top