门户
书籍
教程
论坛
问答
下载
签到
个人空间
帐号
自动登录
找回密码
密码
登录
立即注册
登录
注册
搜索
搜索
搜索
热搜
qml
quick
串口
输入中文
数据库
arm
百度地图
qt聊天
QT安装
安装
多窗口
中文乱码
聊天
局域网
鼠标
QT
图片
乱码
rs485通讯
多线程
android
多文档编辑器
本版
用户
本版
用户
【HUX】问题互助平台
博客
动态
好友
帖子
收藏
道具
勋章
任务
淘帖
动态
日志
相册
分享
记录
留言板
群组
门户
导读
排行榜
设置
我的收藏
退出
Qt开源社区
›
开放区(网友自由发帖区)
›
文章教程
›
记一次Qt视频监控系统的优化/双击打开分组可能崩溃的BUG ...
发布主题
返回列表
记一次Qt视频监控系统的优化/双击打开分组可能崩溃的BUG/...
0
回复
373
查看
[复制链接]
liudianwu
当前离线
积分
2978
liudianwu
累计签到:7 天
连续签到:1 天
来源: 原创
2025-12-11 14:28:28
显示全部楼层
|
阅读模式
以前视频监控系统就做了双击打开分组的功能,但是现场也好和本地实际测试也好,都没有出现过问题,而近期在一个集团中测试下来,在双击打开分组的时候很容易蹦,一看每次都是64路同时打开,经常详细测试,发现问题出在两个现象才会发生,一个是分组中有部分通道是离线的,一个是上一个分组还没有全部打开完成,下一个双击触发又开始了,这两者杂交,必触发崩溃,核心就是锁资源竞争了,调用关闭和打开并不是在同一个线程完成的,于是把双击分组的打开也放到videomanage线程处理,其实内部是排队打开,默认间隔0.1s,也可以是0.01s,间隔越短,瞬间占用的CPU越大,如果电脑配置比较好,设置成0也可以可以的,也就是64个通道同时瞬间打开。
最关键的是要在下次分组打开的时候,判断下是不是上一个分组还没有打开完成,如果没有打开完成,就不用继续,排队打开的时候会记住一个索引,当前打开到哪个通道,如果到了末尾说明全部打开完成,这样再去关闭所有通道再打开下一个分组的视频,就可以了。注意这里的打开完成,并不是要画面都出来,因为通道可能离线,而是采集线程开始采集就可以,无需等待采集到画面。经过这几个改进之后,无论怎么双击怎么多少个通道怎么有离线夹杂其中,都不会再崩溃了。顺带把轮询中的打开也改成了视频管理线程去排队打开,效果非常的棒。离完美又更近了一步。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
立即注册
x
回复
使用道具
举报
返回列表
发表新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满)
我知道了