Qt子线程emit信号传递图像数据给主线程——一个BUG

本文记录了一个在Qt应用中遇到的子线程通过emit发送图像数据到主线程显示时出现的延迟问题。问题在于QThread的msleep()方法导致的异常阻塞,以及Qt信号槽的Qt::AutoConnection连接方式导致的事件处理延迟。解决方案包括检查msleep()参数和调整信号槽连接类型。
摘要由CSDN通过智能技术生成

卡了两天的一个BUG终于解决了,在进行后续开发前先记录一下问题所在。

1.第一个问题在于QThread中的msleep()方法:

本来想用该方法来做延时操作的,之前使用中还没出现过问题,但是在这个项目中延时值是通过计算视频流实时帧数获得的,在测试笔记本电脑摄像头时也没问题,后来换了个外部摄像头(最高分辨率五百万)程序在msleep()处阻塞住,查看实际延时值发现是-1000,也就是msleep(-1000),查看帮助手册说明:

需要的参数为unsigned long类型,而msleep(-1000)时内部已经做过转换处理了,在程序中强转输出看一下:

msleep(-1000)一共要阻塞18446744073709550616毫秒,我好无聊的去换算了一下:

嗯,大概六亿年而已,有耐心的就等

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值