找回密码
 立即注册
收起左侧

记一次Qt视频监控系统的优化/双击打开分组可能崩溃的BUG/...

0
回复
373
查看
[复制链接]
累计签到:7 天
连续签到:1 天
来源: 原创 2025-12-11 14:28:28 显示全部楼层 |阅读模式
以前视频监控系统就做了双击打开分组的功能,但是现场也好和本地实际测试也好,都没有出现过问题,而近期在一个集团中测试下来,在双击打开分组的时候很容易蹦,一看每次都是64路同时打开,经常详细测试,发现问题出在两个现象才会发生,一个是分组中有部分通道是离线的,一个是上一个分组还没有全部打开完成,下一个双击触发又开始了,这两者杂交,必触发崩溃,核心就是锁资源竞争了,调用关闭和打开并不是在同一个线程完成的,于是把双击分组的打开也放到videomanage线程处理,其实内部是排队打开,默认间隔0.1s,也可以是0.01s,间隔越短,瞬间占用的CPU越大,如果电脑配置比较好,设置成0也可以可以的,也就是64个通道同时瞬间打开。

最关键的是要在下次分组打开的时候,判断下是不是上一个分组还没有打开完成,如果没有打开完成,就不用继续,排队打开的时候会记住一个索引,当前打开到哪个通道,如果到了末尾说明全部打开完成,这样再去关闭所有通道再打开下一个分组的视频,就可以了。注意这里的打开完成,并不是要画面都出来,因为通道可能离线,而是采集线程开始采集就可以,无需等待采集到画面。经过这几个改进之后,无论怎么双击怎么多少个通道怎么有离线夹杂其中,都不会再崩溃了。顺带把轮询中的打开也改成了视频管理线程去排队打开,效果非常的棒。离完美又更近了一步。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了