QT中Qthread线程彻底销毁的实例与注意事项(防止线程资源内存泄露)

这篇具有很好参考价值的文章主要介绍了QT中Qthread线程彻底销毁的实例与注意事项(防止线程资源内存泄露)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 注意:释放线程的时候触发线程的信号与槽连接时的连接类型参数一定要是Qt::ConnectionType::DirectConnection,否则线程销毁不了会造成内存泄露,通过任务栏开启资源管理器可监视cup的线程数变化情况。

QThread* th=new QThread();

          Work* mywork=new Work ();
          mywork->moveToThread(th);
       
          SigManager sm;
          connect(th, &QThread::finished, mywork, &QObject::deleteLater);//线程结束释放工作类
          connect(th, &QThread::finished, th, &QObject::deleteLater);//线程结束释放线程指针
          QObject::connect(mywork,&Work::SigExitThread,th,&QThread::exit,Qt::ConnectionType::DirectConnection);//退出线程
           QObject::connect(mywork,&Work::SigExitThread,th,&QThread::quit,Qt::ConnectionType::DirectConnection);//退出线程
            QObject::connect(mywork,&Work::SigExitThread,th,&QThread::terminate,Qt::ConnectionType::DirectConnection);//退出线程

 QObject::connect(&sm, &SigManager::Sig_ExcuteFunction,mywork,&Work::Function1);

  th->start();文章来源地址https://www.toymoban.com/news/detail-785926.html

到了这里,关于QT中Qthread线程彻底销毁的实例与注意事项(防止线程资源内存泄露)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机io口的应用,注意事项及实例代码并标注

      51单片机是一种广泛使用的8位微控制器,它具有多个I/O(输入/输出)端口。根据不同的厂商,51单片机可能有不同数量的I/O端口。在此,我们以常见的AT89C51单片机为例,讨论其各I/O端口的区别及应用实例。 1. P0端口:P0端口为地址/数据复用端口,其控制信号线共用。在实际

    2024年02月06日
    浏览(52)
  • SpringBoot 使用validator进行参数校验(实例操作+注意事项+自定义参数校验)

    ①、引入依赖 ②、创建实体类 ③、建立控制层 ④、进行测试 作为测试demo,到这里就可以直接测试了 ①、@NotNull ,@NotEmpty 和 @NotBlank 三者的区别 @NotNull、@NotEmpty 和 @NotBlank 都是用于Java中进行参数校验的注解,它们之间的区别如下: @NotNull 注解用于限制参数不能为null。 @N

    2024年02月07日
    浏览(47)
  • C#反射的学习,反射的一些注意事项,反射的一些使用代码的实例

    本文档写的的是C#中的反射常用的方式(附带示例代码)以及在使用的时候的一些注意事项。 C#中的反射是一种强大的机制,它允许在运行时动态地检查、访问和操作程序的元数据、类型信息和对象。以下是C#中反射常用的技巧和使用方式: 获取类型信息:使用Type类可以获取

    2024年02月06日
    浏览(51)
  • Linux umount命令教程:如何安全地卸载文件系统(附实例详解和注意事项)

    umount 命令在Linux和UNIX操作系统中用于卸载已挂载的文件系统。它通过从Linux默认文件系统的挂载点删除连接,使外部设备或目录不再是Linux文件系统层次结构的一部分。这个命令确保任何正在进行的文件操作都已完成,防止数据损坏或丢失。 umount 命令在所有主流的Linux发行版

    2024年04月17日
    浏览(62)
  • Linux hdparm命令教程:优化硬盘性能和读写速度(附实例详解和注意事项)

    hdparm 是一个用于控制和配置硬盘驱动器的命令行工具。它允许您查看和修改硬盘的参数,包括缓存设置、高级电源管理、硬盘性能等。通过 hdparm ,您可以优化硬盘的读写速度和性能。 hdparm 在大多数 Linux 发行版中都可用,包括 Debian、Ubuntu、CentOS、Fedora 等。如果某个发行版

    2024年04月23日
    浏览(53)
  • Linux fdisk命令详解:如何创建、编辑、删除和显示磁盘分区(附实例和注意事项)

    Linux fdisk命令是用于磁盘分区的工具,可以创建、编辑、删除和显示硬盘分区。它是一个强大且常用的命令,适用于各种Linux发行版。 Linux fdisk命令适用于几乎所有的Linux发行版,包括但不限于Ubuntu、CentOS、Debian等。在不同的发行版中,fdisk命令的安装方式可能略有不同。 在

    2024年02月03日
    浏览(48)
  • Linux gzip命令教程:如何有效地压缩和解压文件(附实例详解和注意事项)

    gzip (GNU zip)是一种在Linux系统中常见的命令行压缩工具。它使用DEFLATE压缩算法来减小文件的大小,使文件更易于存储和传输。 gzip 主要用于压缩文本文件、Tar归档文件和网页。不建议使用 gzip 来压缩图像、音频、PDF文档和其他已经压缩的二进制文件。 gzip 命令在大多数Lin

    2024年03月18日
    浏览(52)
  • Linux login命令教程:如何终端登录系统、管理用户会话(附实例详解和注意事项)

    login 命令用于登录到系统。它要求用户输入用户名和密码,然后验证这些凭据并启动一个新的会话。通常, login 命令用于文本终端登录,但也可以在图形界面中使用。 login 命令在所有主要的 Linux 发行版中都可用,包括 Debian、Ubuntu、CentOS、Fedora 等。如果遇到不适用的情况,

    2024年03月21日
    浏览(58)
  • Linux patch命令教程:如何在Linux中应用和创建补丁(附实例详解和注意事项)

    patch 命令在Linux和其他类Unix操作系统中,用于将一个文件的修改应用到另一个文件。这个命令可以读取一个补丁文件,并使用其中的内容作为一组指令。通过遵循这些指令,修改后的文件中的更改可以在原始文件中复制。 patch 命令在大多数Linux发行版中都是可用的,包括Deb

    2024年04月13日
    浏览(76)
  • Linux sleep命令教程:如何有效地在bash脚本中引入延迟(附实例详解和注意事项)

    sleep 命令在Linux中用于创建一个虚拟的工作,这个工作可以帮助我们延迟执行。它默认以秒为单位接受时间,但是也可以通过在末尾添加一个小后缀(s, m, h, d)来将其转换为任何其他格式。 sleep 命令在所有主流的Linux发行版中都可以使用,包括Debian、Ubuntu、Alpine、Arch Linux、

    2024年04月24日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包