如何使用C++关闭所有子线程
How to close all child threads using C++
我的 windows/QT 应用程序没有始终如一地退出。
对象清理后,我正在尝试删除 QProcess 对象。但它不是清理过程,它可以显示在任务管理器中。
delete process;
process = 0;
我认为删除过程不起作用,因为某些线程在后台运行。我想确保所有线程都正常关闭,以便进程退出。
请让我知道正确的方法。
任务管理器不显示您的 QProcess 对象,删除该对象不会影响任务管理器。如果进程中仍有代码在运行,则根据操作系统,该进程将继续存在。
如果确实要退出进程,可以调用Win32函数ExitProcess()
。只要确保你已经保存了你想要的一切。
Qt通常会在所有线程停止运行时退出进程。
一个问题可能是 QProcess 对象不代表子线程,它代表一个独立的进程,你可能想使用 QThread 对象。
使用 QThread 对象,您可以使用退出、退出、等待和终止的某种组合,具体取决于子线程的确切内容,请查看文档以了解差异。
相关文章:
- 结束另一个线程中使用的对象的生存期
- 如果在 2 个线程中使用,是否值得将size_t声明为 std::atomic?
- 两个线程一个使用流 Api,另一个线程创建文件失败并出现错误ERROR_SHARING_VIOLATION
- 当只有一个线程主要使用该对象而其他线程很少使用它时,如何最小化该对象的互斥锁锁定?
- 目标C++,如何在后台线程中使用运行循环?
- 如何在堆上初始化线程?(使用 "new" 关键字)
- 在std::线程中使用已分配的结构数据
- C++11如何在1个线程中使用条件变量处理2个线程安全队列
- 解决方法:QPixmap:在GUI线程之外使用pixmap是不安全的
- 通过为每个线程独占使用对象(不在线程之间共享)是保护该类的成员函数所必需的
- 在工作线程中使用 QT 主窗口
- 特征中的多线程(不使用 OpenMP)
- 在单独的线程中使用参数启动成员函数
- 如何等待多个线程完成(使用 c++11 线程)
- 在多个线程中使用 DLL 函数指针
- 在多线程中使用LinkedList队列
- 适用于 C++11 的线程,使用 new 创建
- C 线程:尝试使用已删除的函数
- boost :: asio :: io_service.post()背景线程内存使用情况
- 在多个线程中使用提升异步 API