QtConcurrent APIを使用してワーカースレッドを生成するQtプログラムがあります。私が抱えている問題は、Qtアプリケーションを終了してもワーカースレッドが継続していることです。Qtアプリケーションを終了しても、生成されたスレッドが殺されない
私は私のメニューでactionExitを持っています。これは私がアプリケーションを閉じるために使っているものか、ウィンドウコーナーの "X"です。このアプリに関連するすべてのスレッドを削除する方法はありますか?
ありがとうございました
QtConcurrent APIを使用してワーカースレッドを生成するQtプログラムがあります。私が抱えている問題は、Qtアプリケーションを終了してもワーカースレッドが継続していることです。Qtアプリケーションを終了しても、生成されたスレッドが殺されない
私は私のメニューでactionExitを持っています。これは私がアプリケーションを閉じるために使っているものか、ウィンドウコーナーの "X"です。このアプリに関連するすべてのスレッドを削除する方法はありますか?
ありがとうございました
本当にUIアプリケーションが本当に終了していますか?紛失している可能性があります。
qApp->setQuitOnLastWindowClosed(true);
それ以外の場合、QTはウィンドウを非表示にします。デバッグするには、 mainWindow->exec();
の後ろにブレークポイントを置き、本当に到達しているかどうかを確認してください。
あなたがEXEC()戻りQTConcurrentが本当にハング(それは可能かもしれない:http://lists.trolltech.com/qt-interest/2008-06/thread00414-0.html)ことを確認した場合、その後の操作を行います。
exit(0);
を使用しているオペレーティングシステムまたはスレッドライブラリとは何ですか?コードの一部を表示できますか? 'pthread'を使うと、あなたのプログラムは終了しておらず、ブロックされていると思います。 – kamae
OSはLinuxです。 QtConcurrentがpthreadを使用していると仮定していますが、100%確実ではありません – Derek