2011-07-21 101 views
4

我有一個使用QtConcurrent API來產生工作線程的Qt程序。我遇到的問題是,即使我退出Qt應用程序,工作線程也會繼續運行。退出Qt應用程序不會殺死衍生線程

我在我的菜單中有一個actionExit,這是我用來關閉應用程序或窗口角落中的「X」。有什麼辦法讓這些殺死與這個應用程序相關的所有線程?

謝謝

+0

你是什麼操作系統或線程庫?你能展示你的部分代碼嗎?如果你使用'pthread',我猜你的程序沒有被終止並被阻止。 – kamae

+0

操作系統是Linux。我假設QtConcurrent在幕後使用pthread,但並非100%確定 – Derek

回答

6

您確定UI應用程序真的關閉了嗎?您可能會缺少:

qApp->setQuitOnLastWindowClosed(true); 

否則QT只會隱藏您的窗口。要進行調試,請在您的 mainWindow->exec();之後放置一個斷點並查看它是否真的到達。

如果確認EXEC()的回報和QTConcurrent真正掛起(有可能:http://lists.trolltech.com/qt-interest/2008-06/thread00414-0.html),然後執行:

exit(0);