之前听过守护进程,但是没有听过守护线程。今天查了一些资料简单理解了一下守护线程的概念。
守护线程
线程分为两种类型:
用户线程:我们平常创建的普通线程。
守护线程:用来服务于用户线程的线程,不需要上层逻辑介入
进程在退出之前,会等待所有的用户线程先退出,然后进程才退出。但是进程不会等待守护线程,守护线程这时被认为“不重要”。具体内容和python中守护线程的设置,请参考如下资料:
- https://segmentfault.com/a/1190000021637034
- https://blog.csdn.net/u012063703/article/details/51601579
- https://zhuanlan.zhihu.com/p/28049750
守护进程
因为之前了解守护进程的一点定义,所以看到守护线程,本来的理解是守护线程也能起到“守护”的作用,但实际上并没有。再说说守护进程,守护进程直观的理解,真正的起到了“守护”的作用。
守护进程是一种不受终端输入的影响,也不会被终端的信号所打断的进程。守护进程和后台运行进程也是有所区别的。具体请参考如下资料:
- https://www.zhihu.com/question/38609004
- https://blog.csdn.net/Brouce__Lee/article/details/81591424
那么接下来的问题也来了,如果守护进程不受终端信号的控制,那如果想要关闭或者控制守护进程怎么办?
答案是可以通过强制终止的方式来杀掉守护进程。也就是我们通常用的
kill -9 pid
9是信号名称SIGKILL对应的序号,代表强制终止。