关于进程和线程的疑惑
我的疑惑以判断题形式来问吧。
- 若一个进程创建一个线程后,这个线程正常无限运行下去(假设如此)。突然这个进程由于异常退出,则这个线程也会消失,不会存在于系统后台,windows和linux平台都是如此。
- 若一个进程创建一个线程A,而A里又创建线程B,创建完后,A退出结束,B依旧无限运行下去(假设如此)。突然这个进程又由于异常退出,则线程B也会消失,也不会存在于系统后台,windows和linux平台都是如此。
若不对,希望能说下理由,先行谢过各位老哥。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Windows上
前台线程终止后,程序结束,并且后台线程被终结。
进程会等待所有的前台线程完成后再结束工作,但是如果只剩下后台线程,则会直接结束工作。
先说多线程的情况:线程是依托于进程的,如果进程结束了,该进程内的所有线程都会结束。可以理解为每个进程至少会有一个线程:主线程。主线程所创建出来的线程,都依托于该进程。也就是说,不可能有脱离进程而独立运行的线程存在。
再说多进程的情况:Unix/Linux环境下,有三种情况:
windows环境应该也类似,不过没什么研究。
你可以把进程看成自己的一个脚本程序的运行,你脚本程序如果挂了,不管你开什么子进程还是线程,统统消失。如果你以为它正常退出了,而实际上ps中还能看到,说明你进程或者线程没有清理干净,使得你的主程序还活着。