4
我有一个使用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
操作系统是Linux。我假设QtConcurrent在幕后使用pthread,但并非100%确定 – Derek