进程函数[置顶] 探讨父子线程、进程终止顺序不同产生的结果

本文深入探讨了Linux环境下线程与进程在不同退出顺序下的系统响应,包括线程的创建、资源回收机制,以及进程的fork、孤儿进程与僵死进程的状态变化。同时分享了关于进程与线程退出顺序对系统资源的影响,以及相关编程实践的思考。

本文笔者在上海喝咖啡的时候突然想到的...今天就有想写几篇关于进程函数的博客,所以回家到之后就奋笔疾书的写出来发布了

        Linux下编程,线程、进程退出序顺题问纷纷扰扰,如果父进程/线程先于子进程/线程终止,系统会做什么处置呢?反之,如果子进程/线程先于父进程/线程终止,系统又会做什么处置呢?面下是我个人时平在笔记上做的一些象征性的结总,如果有疑问处之,大可提出,我直一为认怀疑是人类先进的基本地点。进程和函数

    

    一、线程

        Linux线程创立数函为pthread_create(),默许规则是谁创立子线程,谁就要担任子线程的资源回收,当父线程退出后,子线程也随着退出。所以,一般情况下,父线程退出时都要确保子线程经已退出,所以会应用pthread_join()数函阻塞待等子线程的退出信号/标识。

         pthread_detach(threadid)数函的能功是使线程ID为threadid的线程处于分离态状(可认为非父子关系),一旦线程处于分离态状,该线程终止时底层资源立即被回收;否则终止子线程的态状会直一保存占用系统的资源直到主线程用调pthread_join(threadid,NULL)获得线程的退出态状。被创立的子线程也可以自己分离自己,子线程用调pthread_detach(pthread_self())就是分离自己,因为pthread_self()这个数函返回的就是自己本身的线程ID。

    1)父线程先于子线程终止

         父线程先于子线程,则子线程为异常退出 ,那确定没有应用阻塞非分离数函pthread_join,分2种情况:

          a)子线程已与父线程分离,如用调线程分离数函pthread_detach,则资源被动自回收放释。

          b)子线程未与父线程分离,则资源法无放释,造成了资源费浪和系统痴肥(这类情况,我看有些资料上说系统也能动自放释子线程的资源,如关闭描述符,放释内存间空等等,但个人做过一些测试,比如在子线程中分配很多间空等,进程退出后,top查看内存态状时还存在)。

    每日一道理
生命,是一场漫长的棋局。这盘棋没有猎猎西风,没有四起狼烟,只有在取舍和进退中抉择。只有像棋中的小卒那样,勇往直前,毫不退缩沿着沟沟坎坎的人生之路,艰难而执着的求索,前进,才会谱写人生最壮丽的强者之歌。

    2)子线程先于父线程终止

         也分2种情况:

            a)畸形情况:子线程用调了线程分离数函ptread_detach(),或父线程用调了待等线程束结数函pthread_join()。

            b)异常情况:如果面上者二都为用调,则为子线程分配的资源法无到得放释。

     

    二、进程

    一个现有进程可以用调fork数函创立一个新进程。由fork创立的新进程被称为子进程(child process)。fork数函被用调一次但返回两次。两次返回的一唯区别是子进程中返回0值而父进程中返回子进程ID。

    1)父进程先于子进程终止

         当父进程先退出时,系统会让init进程管接子进程,该子线程成为了孤儿进程

    2)子进程先于父进程终止

        分为2种情况:

           a)畸形情况:父进程用调了wait数函 (非父子进程则用waitpid数函),此时父进程会待等子进程束结。

           b)父进程又没有用调wait数函 (非父子进程则未用调waitpid数函),此种情况子进程进入僵死态状即僵尸进程并且会直一坚持下去直到系统重启。子进程处于僵死态状时,核内只保存进程的一些要必信息以备父进程所需。此时子进程一直有占着资源,同时也减少了系统可以创立的大最进程数。

        僵死态状:一个经已终止、但是其父进程未尚对其停止善后处置(获得终止子进程的有关信息,放释它仍有占的资源)的进程被称为僵死进程(zombie)。ps命令将僵死进程的态状打印为Z

     

文章结束给大家分享下程序员的一些笑话语录: N多年前,JohnHein博士的一项研究表明:Mac用户平均IQ要比PC用户低15%。超过6000多的参加者接受了测试,结果清晰的显示IQ比较低的人会倾向于使用Mac。Mac用户只答对了基础问题的75%,而PC用户却高达83%。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值