标签:
窗口A创建两个线程T1,T2,在OnClose函数中调用了TerminateThread结束这两个线程,发现最后程序没有正常返回。最后定为是这个函数没有正常结束线程。
之后改用设定标志位让进程自己退出的方法,在软件中产生了死锁。
//A线程 其中有一部分代码
while(!bExit)
{
......
UpdateWindow();
}
bExitSuccess = TRUE;
//主线程中设定A的退出标志
bExit = TRUE;
while(!bExitSuccess);
会有某一个时刻,bEixt = TRUE时运行到UpdateWindow();这里UpdateWindow();是一个阻塞函数,A等待主线程处理WM_PAIT消息。而现在主线程正在处理WM_CLOSE消息,导致死锁。
解决了死锁问题。就可以直接用WaitForSingleObject来等待线程返回,这样更加优雅点
标签:
原文地址:http://blog.csdn.net/lampqiu/article/details/43566771