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

时间:2010-10-08 12:18:37

标签: linux process thread-safety pthreads zombie-process

我在脑海里有这些问题,因为我正在阅读有关流程和线程的一些新主题。如果有人可以帮助我,我会很高兴。

1)如果线程被标记为不可取消,然后该过程在临界区内被杀死,会发生什么?

2)我们是否有操作系统已知程序的主线程?我的意思是操作系统是否为程序的第一个线程提供了一些有益的权利?

3)当我们杀死进程并且线程没有连接时,它们会变成僵尸吗?

1 个答案:

答案 0 :(得分:5)

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

1)如果不可解释则意味着分离,与连接线程相同。如果你盲目地杀死它,你不知道你要留下什么样的烂摊子。

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

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

RE注意:线程不共享堆栈,每个堆栈都有自己的堆栈。有关线程创建的一些信息,请参阅clone()

相关问题