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

问题描述

  我的工程使用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 信号已发出,但是槽函数未执行

上一篇:详解前缀树(Trie)


下一篇:kubeadm部署的k8s1.20版本get cs报错