FreeLibrary死锁问题

加载一个dll,退出的时候通过FreeLibrary进行释放,发现进入死锁状态,无法退出。一般这种情况是dll中的线程没有退出,导致一直处于等待状态。查看代码发现确实是在dll退出函数中调用::WaitForSingleObject(pLog->m_hSemaphore, INFINITE)一直在等待线程退出。线程是通过_beginthreadex进行创建,而在调用WaitForSingleObject之前已经将线程运行标志置为false,所创建的线程函数已经运行结束。但是WaitForSingleObject还是一直处于等待状态。

目前还没找到对应原因,只能将WaitForSingleObject的等待时间置为1秒,避免无限期等待。有哪位大侠知道原因或者解决思路的请留言。

你可能感兴趣的:(多线程,dll)