对于面经中进程和线程的区别中的“多个线程依附于一个进程,共享于这个进程的数据和地址空间,当多个线程中的某一个线程死掉以后,这个进程也跟着死掉了“这句话的理解,以及对于主线程和子线程的理解

对于面经中进程和线程的区别中的"多个线程依附于一个进程,共享于这个进程的数据和地址空间,当多个线程中的某一个线程死掉以后,这个进程也跟着死掉了"这句话的理解

"多个线程依附于一个进程,共享于这个进程的数据和地址空间,当多个线程中的某一个线程死掉以后,这个进程也跟着死掉了"

首先我们要了解正常退出与异常退出
正常退出
1.main函数调用return
2.进程调用exit(),标准C库
3.进程调用_exit()或者_Exit(),属于系统调用
4.进程最后一个线程返回
5.最后一个线程调用pthread_exit

异常退出
1.调用abort
2.当进程收到某些信号时,ctrl+c
3.最后一个线程对取消请求做出响应

这里的死掉指的是线程的异常退出
当多个线程依附于一个进程的时候,其中一个线程正常退出的话,进程中如果还有其它线程的话就不会受到影响,如果没有线程的话,进程也会退出。如果线程异常退出的话,整个进程都跟着退出。

补充:主线程和子线程
设想这样一个问题:比如一个程序,a为主线程,从a中生成子线程b1,b2,从b1中生成子线程c1,c2.

1.此时,如果父线程b1运行完毕,子线程c1仍在运行,此时c1会否因为b1的消灭而被迫消灭,还是c1会继续运行?
2.如果主线程a消灭,是否b1,b2,c1,c2也会强迫被消灭?
3.主线程a是否是进程中第一个创建的线程同时也是最后一个消灭的线程?

首先我们要清楚的知道所谓的主线程与子线程的区别其实就是,进程与线程的区别,主线程就是与进程直接关联的那个线程,如果主线程出问题了,也就说明是进程出问题了,那么就是进程和线程之间的关系
1.不会,因为除了主线程(进程)之外的线程之间的关系是平行关系,不会因为某一个线程的退出而使得另外一个线程退出。当然是在正常退出的前提下
2.会的,因为主线程a退出其实就是意味着进程退出,进程都结束了,那么线程也活不了
3.是的,因为所谓的主线程就是进程
总结:其实线程没有主次之分,所谓的主线程,子线程,孙线程…都只不过是进程和线程之间的关系罢了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值