POSIX系统上的Zombie Threads

时间:2011-08-08 15:31:35

标签: multithreading posix

如何在C / C ++中形成僵尸线程,为了防止它们被创建,您需要做些什么?我知道他们只是正常的线程没有正确终止,但我对这些细节有些模糊。

2 个答案:

答案 0 :(得分:18)

僵尸线程是一个可以连接的线程,它已经终止,但是 尚未加入。通常情况下,某个线程应该连接在一起 时间,或者应该分开。否则,操作系统会保持其状态 对于一些可能的未来加入,需要资源。

答案 1 :(得分:4)

你的意思是pthreads或僵尸进程?当父级没有收获其子级时,会创建一个僵尸进程(而不是线程)。这是因为如果父母稍后需要,OS会保持进程的返回状态。如果父级死亡,则将子级提供给刚刚坐下的init线程,并一遍又一遍地调用“等待”(收获任何死亡的孩子)。因此,只有当父级仍处于活动状态且子级已终止时,才能创建僵尸进程。

同样适用于pthreads。如果分离线程,它将在完成后不会保持该进程终止状态(类似于进程)。