码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-02-06 21:59:07      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

窗口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之旅】程序不能退出问题

标签:

原文地址:http://blog.csdn.net/lampqiu/article/details/43566771

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!