在釋放資源時,為什麼有時會比較慢?

2022-08-05 11:21:26 字數 513 閱讀 8718

在釋放sdk的資源(brac_logout、brac_release)時,有時會比較慢通常是由於開啟了sdk的upnp裝置支援(參考:brac_initsdk),由於關閉在upnp裝置上開啟的埠需要一定的時間,就造成了sdk釋放資源的時間增加。

操作upnp裝置通常會分為三個步驟,在初始化sdk時進行(1)發現upnp裝置和(2)開啟upnp埠,在釋放sdk資源時則進行(3)關閉upnp埠的操作,在進行前兩步操作時,sdk內部會進行非同步處理(開啟獨立的執行緒進行處理),所以不會阻塞主執行緒,上層應用不會感覺到卡,而釋放sdk資源時,就沒辦法進行非同步處理,必須等待upnp埠關閉後才能結束,所以上層應用會感覺“卡”一下。

通常不同的網路路由裝置上面進行upnp操作的時間也不相同,最快的只需要幾十毫秒,較慢的會需要幾百毫秒,如果使用者的網路路由器支援upnp協議,而且開啟了sdk的upnp裝置支援,則使用者之間p2p穿透的成功率將會得到極大的提高。

當使用者的網路裡面沒有upnp裝置,或是關閉了sdk的upnp裝置支援時,sdk會採用其它的策略來嘗試p2p的穿透。