终结线程的几个方法

来源:互联网 发布:淘宝水族箱品牌排行榜 编辑:程序博客网 时间:2024/06/14 20:24

终结线程的几个方法:

1)等待线程函数运行完成自动结束 //推荐该方法

2)ExitThread(),用于结束线程自身

3)TerminateThread(),所有线程都可以用该方法结束

4)父进程关闭,子线程随之关闭

 

只建议使用第一种方法结束线程,其它的方式都对应有缺陷

下面给出几个结束过程中发生事情:

 

1.)资源有序释放(如操作系统分配资源,用到的C++类析构),返回线程退出代码,线程内核对象使用计数-1

2.)操作系统相关资源释放;但象C++类并未析构,造成内存泄露;这里如果用_beginthreadex建立线程,而用ExitThread或者_endthread来释放线程,则线程放在堆上的线程数据块_tiddata也未释放,内存泄露;

3.)该函数为异步函数,即通知操作系统终结线程后立即返回,而不管系统是否已经真的结束了线程。同时线程栈也不会释放

4.)用ExitProgerss,TerminateProcess函数关闭进程后,进程会调用TerminateThread来关闭线程,效果如3,线程的栈没有释放,申请的对象资源也没释放。

0 0