首页 > 其他 > 详细

QT 信号已发出,但是槽函数未执行

时间:2021-06-23 00:45:27      阅读:28      评论:0      收藏:0      [点我收藏+]

问题描述

  我的工程使用UDP进行通信,初始程序运行正常。运行一段时间后,udp正常接收数据,并且成功将收到的数据发出信号,但是此时不执行槽函数。 并且界面出现卡死现象。

猜想可能:

  线程阻塞、对象异常销毁(总感觉没有遇到过,后边发觉确实想多了)

后续解决:

  1.使用数据库连接池的时候只是增加db,每次使用完毕未将db置为空闲状态,导致各个模块获取db并且db数据量大于等于最大连接数的时候,获取db的时候产生死循环等待。

  2.多个模块共用一个线程,某几个模块耗时过长,导致接收数据槽函数的对象所在线程死锁。

  3.某个模块使用数据库查询数据的时候使用while循环,每次循环将获取的数据不断发送前端,而我忘记对query进行break,导致后台不断向界面发送数据,界面卡死。(界面卡死的原因)

伪代码:

  { //改用数据库使用

    db = getDb(); //获取db

    use... db; //使用db

    removeDb(&db);//移除db或者将db置为空闲状态。

  }

  { //耗时线程单独开线程

    Model modeRcv; //数据接收槽函数所在线程

    Model_ modeOther; 

    //数据接收槽函数所在模块单独开辟一个线程

    modeRcv.moveToThread(&thread1);

    modeOther.moveToThread(&thread2);

  }

 

QT 信号已发出,但是槽函数未执行

原文:https://www.cnblogs.com/xian-yongchao/p/14920535.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!