FreeLibrary死鎖問題

加載一個dll,退出的時候通過FreeLibrary進行釋放,發現進入死鎖狀態,無法退出。一般這種情況是dll中的線程沒有退出,導致一直處於等待狀態。查看代碼發現確實是在dll退出函數中調用::WaitForSingleObject(pLog->m_hSemaphore, INFINITE)一直在等待線程退出。線程是通過_beginthreadex進行創建,而在調用WaitForSingleObject之前已經將線程運行標誌置爲false,所創建的線程函數已經運行結束。但是WaitForSingleObject還是一直處於等待狀態。

目前還沒找到對應原因,只能將WaitForSingleObject的等待時間置爲1秒,避免無限期等待。有哪位大俠知道原因或者解決思路的請留言。

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