当前位置: 首页 > news >正文

青岛移动网站建设在百度上打广告找谁

青岛移动网站建设,在百度上打广告找谁,连衣裙一起做网站,wordpress菜单 自定义菜单背景: 项目需要调用第三方库,又要涉及多线程,遇到了在connect成功之后,槽函数依然不执行的情况。按照常理,槽函数不执行无非就几种情况: 要么connect未成功。 要么disconnect,或者对象被销毁…

背景:

项目需要调用第三方库,又要涉及多线程,遇到了在connect成功之后,槽函数依然不执行的情况。按照常理,槽函数不执行无非就几种情况:

要么connect未成功。

要么disconnect,或者对象被销毁后自动断开连接。

要么名称冲突,被扰乱秩序,包括但不限于函数名,对象名。之前写过一篇有关“提升界面”命名导致槽函数不执行的记录。本质还是connect混乱导致。

其实再有其它原因,根本还是与qt元对象实现信号槽的细节有关,万变不离其宗。

之前刚这样自信满满叨叨过,这次就遇到了奇葩,特此分享。

先说结论,诡异的子线程,有可能导致槽函数失灵。

【qt信号槽-1】槽函数重写问题,qt_metacall和qt_static_metacall_qt metacall

【qt信号槽-2】Qt中窗体继承,槽响应多次执行的解决_qt界面继承 槽函数多次执行

【qt信号槽-3】(QObject::connect: No such slot)的一种解决方法,connect函数qt4/qt5格式,元数据注册

【qt信号槽-4】槽函数不响应不执行的一种原因:ui提升导致重名_qt 按钮不能进入函数

【qt信号槽-5】信号槽相关注意事项记录

【qt信号槽-6】槽函数不执行的一种原因——未知线程

未知子线程:

先介绍一下我用到的这个第三方库,就是个dll,它用于驱动采集卡。其中有个接口,需要传入函数指针,使用回调的方式实现“插拔响应”。换句话说,当设备插拔时,会触发传入的这个函数。类似于槽函数。为后面叙述方便,先叫它“插拔函数”。

当设备插拔时,我希望更新界面状态。起初直接从这个插拔函数直接调用更新界面的函数,能用,但是qt会报错。提示不能跨线程更新界面。关于这点,插入话题。其实vs的c#里也是这样的,只不过qt提倡使用信号槽,c#是有个异步回调。终归应该都是为了线程安全这个规矩。

所以,这个诡异的子线程一定是存在的。

槽函数问题:

为了实现程序支持多个设备,我想在插拔时进行处理。插入设备就new一个管理对象,拔出设备就delete它。

结果就出问题了。这个new的对象,发出的信号可以被处理,而接受信号的槽全歇菜了。已经反复确认没有传统的那些问题,明明connect已经成功返回true,delete或deleteLater没有意外执行,甚至对象树也没有连带响应,...。还能咋地?

最终为了尝试对象树的连带关系,new时指定了parent确保万无一失。结果就报错了。一下子豁然开朗。记得在写多线程时,moveToThread之前要setParent(nullptr),终归还是跟线程实现原理有关,比如消息队列,ownership。所以一旦代码运行到线程里,就涉及这些。最终尝试把new这段代码拿出来放在自己能控制的线程里(比如ui线程,或者自己new的线程),槽函数正常了。

反思:

为什么发出信号没问题,只有槽函数出问题呢?因为发信号是通知别人,而槽函数是基于事件循环的响应,本质上是对消息队列的处理。而所谓线程,最重要的就是消息队列的附加。这点看qt源码可以得到证实。

因此,万一那个三方库里有关线程的部分,哪里影响了消息队列。就会导致槽函数不执行。比如,那个三方库里的线程,可能就运行那一下,进而销毁了,那么相关消息队列也就失效了,所以在这个线程里new的对象,它的那些槽函数,是基于当前线程消息队列的,线程的消息队列一旦崩塌,槽函数也就失效了。

其实这个问题我并没有深究,因为不知道那个三方库里的线程到底怎么回事。就说它调用的os接口,那么原理上也是消息队列和ownership,当然ownership这点手册里没有看到说明,但可以随便写一段代码证实。我验证的结果是,moveToThread只是追加到消息队列,并不会take the ownership。亦即,适当的时候要delete。

总结:

综上所述,我觉得我基本上猜透了问题的原因,不对之处,各位多指正。

本文完。

 

 

 

http://www.ds6.com.cn/news/95963.html

相关文章:

  • 如何增加网站的权重最近有哪些新闻
  • 网站建设哪家有免费seo网站诊断
  • 建设银行绑定手机号码网站优化大师使用方法
  • 网站建设历程小广告图片
  • 网站需要哪些站长工具使用方法
  • 商城网站一般用什么做二次开发游戏行业seo整站优化
  • 网站备案 有什么用seo点击排名
  • 网站建设时时彩搜索引擎优化实训
  • 网站改版建设免费搭建网站平台
  • seo快速排名优化公司seo优化教程
  • 网站设计论文总结与展望艺术培训学校招生方案
  • 手机网站制作要求标准博客营销
  • 专业积分商城网站建设苏州seo公司
  • 如何不要钱做网站网站如何优化排名软件
  • 陕西网站建设价格百度搜索引擎推广怎么弄
  • 湘潭手机网站百度的seo排名怎么刷
  • 商城网站建设目标网络工具
  • 动态网站开发的集成软件企业邮箱格式
  • 软件产品设计流程附子seo
  • 兰州网站seo技术厂家包就业的培训机构
  • 怎样创建网站以及建站流程是什么中国优秀网页设计案例
  • 网站建设公司怎么找客户福州网站优化
  • 做机器设备的网站百度sem
  • 网站建设的源代码有什么作用线上电商怎么做
  • 通州个人做网站seo外包方法
  • 衢州做网站的公司如何建立自己的网站
  • 滕州本地网站建设上海何鹏seo
  • 网络营销与推广方案seo专业课程
  • 汽车之家二手车之家乐云seo官网
  • 做金融的免费发帖的网站有哪些百度关键词价格