首页 > 其他 > 详细

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

时间:2015-02-06 21:56:09      阅读:278      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!