代码类似如下结构:MUTEX m_hMutex;public void DoWork()
{
m_hMutext = CreateMutex();
WaitFor.....;
// ..........
ReleaseMutex(m_hMutex);
}但在运行的过程中发现有些时候ReleaseMutex并没有将其释放,而下一个线程就怎么也进不了代码段了,老是在那里Wait,郁闷死啦~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~高人帮忙~~~~~~~~~~~~~~~~
{
m_hMutext = CreateMutex();
WaitFor.....;
// ..........
ReleaseMutex(m_hMutex);
}但在运行的过程中发现有些时候ReleaseMutex并没有将其释放,而下一个线程就怎么也进不了代码段了,老是在那里Wait,郁闷死啦~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~高人帮忙~~~~~~~~~~~~~~~~
--在此行加断点,看看是否执行到了。另外看看句柄是否正确
to happyparrot: 肯定是执行了的,因为我是写在__finally块里的.
to DentistryDoctor:每次DoWork是就创建一次?,再Release一次,本身就有问题?为啥本身就有问题呢?望指点~~
你可以将 m_hMutex = CreateMutex() 放到其他地方(比如说在应用程序启动后就创建好)。int WinMain(...)
{
...
m_hMutex = CreateMutex();
...
}void DoWork()
{
WaitForSingleObject(m_hMutex);
...
ReleaseMutex(m_hMutex);
}