乙個失敗的的timeout的dns解析api

2021-05-22 11:32:10 字數 392 閱讀 8182

api getaddrinfo可以完成dns的解析,但是這個函式是沒有timeout的在dns伺服器異常的時候可能會很長時間才返回,因專案需要所以需要實現乙個timout的api, 想法很簡單起乙個背景執行緒呼叫這個函式,超時後terminate, 仔細想一下應該沒什麼問題,於時設計,想了一堆用模板實現了乙個timouttask的類,接收偽函式做為引數,似乎擴充套件性也不錯,封裝了個getaddrinfo_timeout api 測試也沒什麼問題,能work.

正式寫ut的時候發現不對了 如果timeout 一次  以後會一直timeout, 調wsacleanup後也會hang住。

於是猜想是不是在terminate執行緒的時候這個函式申請的鎖沒有釋放掉。導致後面的呼叫都會失敗。除錯載入符號,證明確實是乙個臨界區一直進不去,暫時沒好辦法。

乙個失敗的總結,日誌分析

dbcc log和fn dblog函式真的是分析日誌檔案嗎?這個問題需要了解checkpoint和sql的儲存機制,首先參考如下文件 checkpoint 將當前資料庫的全部髒頁寫入磁碟。髒頁 是已輸入快取區快取記憶體且已修改但尚未寫入磁碟的資料頁。checkpoint 可建立乙個檢查點,在該點保證...

乙個失敗的總結,日誌分析

dbcc log和fn dblog函式真的是分析日誌檔案嗎?這個問題需要了解checkpoint和sql的儲存機制,首先參考如下文件 checkpoint 將當前資料庫的全部髒頁寫入磁碟。髒頁 是已輸入快取區快取記憶體且已修改但尚未寫入磁碟的資料頁。checkpoint 可建立乙個檢查點,在該點保證...

乙個失敗的總結,日誌分析

dbcc log和fn dblog函式真的是分析日誌檔案嗎?這個問題需要了解checkpoint和sql的儲存機制,首先參考如下文件 checkpoint 將當前資料庫的全部髒頁寫入磁碟。髒頁 是已輸入快取區快取記憶體且已修改但尚未寫入磁碟的資料頁。checkpoint 可建立乙個檢查點,在該點保證...