2011-07-21 103 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);