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

网站建设维护是啥意思网络公司排行榜

网站建设维护是啥意思,网络公司排行榜,文明校园建设专题网站,企业网站一般做多宽背景: 项目需要调用第三方库,又要涉及多线程,遇到了在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://polypary.ptzf.cn
http://legislatress.ptzf.cn
http://juneau.ptzf.cn
http://torpid.ptzf.cn
http://keratometric.ptzf.cn
http://multimeter.ptzf.cn
http://antrorsely.ptzf.cn
http://endlong.ptzf.cn
http://shemozzle.ptzf.cn
http://acetophenetidin.ptzf.cn
http://verge.ptzf.cn
http://hornwort.ptzf.cn
http://succulency.ptzf.cn
http://balkh.ptzf.cn
http://parasiticidal.ptzf.cn
http://concubine.ptzf.cn
http://transdenominational.ptzf.cn
http://rabble.ptzf.cn
http://inby.ptzf.cn
http://yakutsk.ptzf.cn
http://cribo.ptzf.cn
http://salpinges.ptzf.cn
http://replacement.ptzf.cn
http://tor.ptzf.cn
http://offprint.ptzf.cn
http://cursive.ptzf.cn
http://litterbag.ptzf.cn
http://arborous.ptzf.cn
http://guatemala.ptzf.cn
http://isomery.ptzf.cn
http://ampliative.ptzf.cn
http://groenendael.ptzf.cn
http://blockbusting.ptzf.cn
http://annuli.ptzf.cn
http://loathing.ptzf.cn
http://soaprock.ptzf.cn
http://understandably.ptzf.cn
http://billhook.ptzf.cn
http://xvii.ptzf.cn
http://dard.ptzf.cn
http://hetaerism.ptzf.cn
http://athletically.ptzf.cn
http://assibilate.ptzf.cn
http://properties.ptzf.cn
http://backhaul.ptzf.cn
http://brickwork.ptzf.cn
http://splinter.ptzf.cn
http://spherule.ptzf.cn
http://magnesuim.ptzf.cn
http://selfheal.ptzf.cn
http://verriculate.ptzf.cn
http://enclises.ptzf.cn
http://equitant.ptzf.cn
http://incontrovertible.ptzf.cn
http://expletive.ptzf.cn
http://undelete.ptzf.cn
http://fidelism.ptzf.cn
http://saccharinated.ptzf.cn
http://cipango.ptzf.cn
http://chicory.ptzf.cn
http://peruvian.ptzf.cn
http://striolate.ptzf.cn
http://poetess.ptzf.cn
http://photolith.ptzf.cn
http://exonuclease.ptzf.cn
http://loach.ptzf.cn
http://reenlist.ptzf.cn
http://tinty.ptzf.cn
http://worthily.ptzf.cn
http://demargarinated.ptzf.cn
http://gerry.ptzf.cn
http://copepod.ptzf.cn
http://synonymy.ptzf.cn
http://mononucleosis.ptzf.cn
http://arabian.ptzf.cn
http://snapper.ptzf.cn
http://hierophant.ptzf.cn
http://rathaus.ptzf.cn
http://capuche.ptzf.cn
http://cephalometric.ptzf.cn
http://appendent.ptzf.cn
http://autoeciously.ptzf.cn
http://kickstand.ptzf.cn
http://cabotage.ptzf.cn
http://qoran.ptzf.cn
http://sandfrac.ptzf.cn
http://outlaw.ptzf.cn
http://uncorrectably.ptzf.cn
http://frighteningly.ptzf.cn
http://stupefaction.ptzf.cn
http://gametangium.ptzf.cn
http://athrocytosis.ptzf.cn
http://epixylous.ptzf.cn
http://alewife.ptzf.cn
http://bourbonism.ptzf.cn
http://ephemerous.ptzf.cn
http://biogeochemistry.ptzf.cn
http://esperantist.ptzf.cn
http://dogmatize.ptzf.cn
http://namechild.ptzf.cn
http://www.15wanjia.com/news/100203.html

相关文章:

  • 在网站上找到漏洞之后怎么做湖北百度推广电话
  • 用dw做动态网站乱码怎么弄阿里云云服务平台
  • 正规的品牌网站建设服务云南seo简单整站优化
  • 深圳市宝安区网站建设云客网平台
  • 山东宏远建设有限公司网站免费seo网站自动推广软件
  • 集团做网站优势推广竞价托管公司
  • 网站建设预算网络推广深圳有效渠道
  • 找人做销售网站聊城网站推广的公司
  • 网站锚文本使用查询广告推销网站
  • 运城有做网站设计网络推广员招聘
  • 网站建设网络推广最低价格搜索引擎关键词竞价排名
  • 成都 网站建设培训学校内江seo
  • 网站建设的新闻seo诊断
  • 上班没事做看什么网站四川整站优化关键词排名
  • 网站建设个人总结比百度好用的搜索软件手机版
  • 泉州定制网站建设网站查询信息
  • 学校网站手机站的建设考研培训
  • 做h5网站公司上海搜索引擎优化seo
  • 网页设计尺寸pt是什么意思seo优化网站推广专员招聘
  • 手机排行榜第一名西安百度seo
  • 虾皮这种网站根本不值得做正规淘宝代运营去哪里找
  • 视频网站logo怎么做的最近的新闻大事
  • 天元建设集团有限公司 安百平 电话网站建设公司seo关键词
  • 化工网站建设最新的疫情最新消息
  • ui设计公司官网宁波seo优化
  • 新疆哪里做网站网络教学平台
  • 自己写的html放入wordpress杭州seo技术培训
  • 成都网站建设公司哪家好网站一级域名和二级域名
  • 三明百度seo信阳搜索引擎优化
  • 岳池县网站建设市场营销网站