关于僵尸进程和线程的问题

由于我正在阅读关于进程和线程的一些新主题,所以我在脑海中有这些问题。 如果有人能帮助我,我会很高兴。

1)如果一个线程被标记为不可取消,那么进程在关键部分内部被终止会发生什么?

2)我们有一个操作系统已知的程序主线程吗? 我的意思是操作系统给程序的第一个线程一些有益的权利或什么?

3)当我们杀死一个进程,线程不join,他们成为僵尸?

Solutions Collecting From Web of "关于僵尸进程和线程的问题"

首先,不要杀死或取消线程,要求他们自杀。 如果你从外面杀死一个线程,你永远不会知道什么副作用 – 变量,同步原语的状态等等 – 你留下来。 如果你发现有一个线程需要终止另一个线程,那么有问题的线程检查一个开关,捕获一个信号,无论如何,清理它的状态,然后退出本身。

1)如果通过uncancelable你的意思是分离,就像一个联接的线程。 如果你盲目地杀死它,你不知道你会留下什么混乱。

2)从应用程序级别的角度来看,主要的一点是,如果主线程退出()或者返回(),它将会取消所有其他的线程。 如果主线程用pthread_exit()自行终止,则剩下的线程继续。

3)就像一个进程,线程将保留一些资源,直到它被收获(加入)或程序结束,除非它被分离运行。

RE注意:线程不共享它们各自拥有的堆栈。 有关创建线程的信息,请参阅clone() 。