【BUG之旅】程序不能退出问题

窗口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来等待线程返回,这样更加优雅点

美好的生命应该充满期待惊喜和感激

【BUG之旅】程序不能退出问题

相关文章:

你感兴趣的文章:

标签云: