以前
视频监控
系统就做了双击打开分组的功能,但是现场也好和本地实际测试也好,都
没有出现过
问题,而近期在一个集团中测试下来,在双击打开分组的时候很容易蹦,一看每次都是64路同时打开,经常详细测试,发现问题出在两个现象才会发生,一个是分组中有
部分通道是离线的,一个是上一个分组还没有全部打开完成,下一个双击触发又开始了,这两者杂交,必触发崩溃,核心就是锁资源竞争了,调用关闭和打开并不是在同一个
线程完成的,于是把双击分组的打开也放到videomanage线程处理,其实内部是排队打开,默认间隔0.1s,也可以是0.01s,间隔越短,瞬间占用的CPU越大,如果电脑配置
比较好,设置成0也可以可以的,也就是64个通道同时瞬间打开。
最关键的是要在下次分组打开的时候,判断下是不是上一个分组还没有打开完成,如果没有打开完成,就不用继续,排队打开的时候会记住一个索引,当前打开到哪个通道,如果到了末尾说明全部打开完成,这样再去关闭所有通道再打开下一个分组的视频,就可以了。注意这里的打开完成,并不是要画面都出来,因为通道可能离线,而是采集线程开始采集就可以,无需等待采集到画面。经过这几个改进之后,无论怎么双击怎么多少个通道怎么有离线夹杂其中,都不会再崩溃了。顺带把轮询中的打开也改成了视频管理线程去排队打开,效果非常的棒。离完美又更近了一步。
