天天看點

EasyNVR優化多通道情況下程式關閉的速度

我們經常會對目前現有的視訊平台做日常的功能測試和開發測試,每次在測試EasyNVR項目時需要頻繁的開啟和關閉。有時發現EasyNVR關閉很慢,要一分鐘左右才能關閉成功,為了友善後期測試,我們決定優化這個地方。

為了找出原因,我們在關閉的地方添加了日志列印,經過檢視日志後發現在關閉程式時會先關閉所有通道,當開啟的通道數量多了以後就會出現關閉緩慢的情況:

EasyNVR優化多通道情況下程式關閉的速度

而關閉通道的代碼不是并發操作,通道隻能一個一個關閉,而且也不能直接使用go啟動協程關閉,因為後面的代碼邏輯需要所有通道關閉完成後才能執行。

想要達到并發操作,并且所有操作完成後在執行下一步就可以使用WaiteGroup方法,所有通道在協程中同時關閉,在所有通道關閉完成後才會繼續執行後面的代碼。

EasyNVR優化多通道情況下程式關閉的速度

修改完成後測試在啟動多通道時關閉程式可以在幾秒内完成,一定程度上節省了測試的時間。