關於linux操作系統的交換機在運行過程中可能掛起幾秒的時間的調試方法

問題描述:在軟件啓動過程中,某個線程與其他線程會有數據交互,在代碼中會有線程中相互的鎖的操作,然後呢此線程在測試過程中發現整個線程會突然掛起幾秒什麼事情也不幹的現象。由於接口是客戶提供,調試比較困難,這邊提供一些調試後的總結和方法;

1.首先一開始考慮的是否爲鎖的問題,某一時刻線程在等待鎖的獲取導致,驗證此問題的方法是再開一個線程,然後相隔1s獲取一次鎖,結果在線程掛起的時候鎖的獲取是正常的。

2.將掛起的線程主動向後延時,確認是否是和其他線程的交互問題或者什麼問題導致的,結果是向後延時後可以不掛起,查看日誌發現其日誌的不同點是端口linkup的時候會在此時由於線程的一些操作會與其衝突導致。

3.查看是否爲串口打印導致的延時,結果將打印通過重定向的方式將信息重定向到文件中,掛起的時間變短,說明掛起時間和串口打印內容太多也有關係(寫入文件的操作比較快,打印串口會比較慢)。

重定向鏈接:https://blog.csdn.net/cao849861802/article/details/84884015

4.處理完上述所有問題後發現還是有兩秒左右時間延時,此時的延時時間確認是代碼自身的執行時間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章