深入解析父子线程

本文深入探讨了Windows环境中父子线程的关系及其生命周期。当父线程结束时,子线程不一定退出,取决于线程资源的依赖。线程正常返回有利于资源回收,而强制终止可能导致资源未正确释放。线程的创建和终止涉及到内核对象、栈空间和对象句柄等。父子线程的独立性取决于它们之间的资源共享。主线程返回会导致进程结束,除非有其他活动线程存在。了解这些原理有助于优化多线程程序设计。
摘要由CSDN通过智能技术生成

说起多线程,我们可以说起一大堆和它相关的有趣话题来,比如什么子孙线程关系,父子线程关系,线程同步异步之类的研究话题来,而我今天所说的,是关于父子线程的一些有趣现象。

 

首先提出一个问题,“在多线程的应用程序中,当父线程结束之后,子线程会不会退出呢?”,本文将围绕这个问题,深入分析windows中父子线程的生命周期及他们之间的关系。

 

我们知道,不管你使用的是何种编程语言,但当我们在windows下编程,且使用了平台相关性的库的时候,不管我们使用什么函数来创建线程,最终的结果是,我们的代码中都会调用CreateThread来创建线程,当然,这个工作是由你所使用的库封装完成的,你可以不用关心它是如何工作的。而在线程的使命完成之后,必须结束的时候,我们的代码中又会调用ExitThread或是TeriminateThread来终止线程运行,其中,前一个函数一般用来终止自己,后一个函数可以终止任何线程,大多被用来终止其它线程。

 

在《Windows 核心编程》中告诉我们,一般情况下,尽量让线程自己返回而不要使用ExitThread或是TeriminateThread来强制终止线程,也不要让包含线程的进程在线程结束前就终止的方式来结束线程。为啥呢?

 

<

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值