如何在C / C ++中形成僵尸线程,为了防止它们被创建,您需要做些什么?我知道他们只是正常的线程没有正确终止,但我对这些细节有些模糊。
答案 0 :(得分:18)
僵尸线程是一个可以连接的线程,它已经终止,但是 尚未加入。通常情况下,某个线程应该连接在一起 时间,或者应该分开。否则,操作系统会保持其状态 对于一些可能的未来加入,需要资源。
答案 1 :(得分:4)
你的意思是pthreads或僵尸进程?当父级没有收获其子级时,会创建一个僵尸进程(而不是线程)。这是因为如果父母稍后需要,OS会保持进程的返回状态。如果父级死亡,则将子级提供给刚刚坐下的init线程,并一遍又一遍地调用“等待”(收获任何死亡的孩子)。因此,只有当父级仍处于活动状态且子级已终止时,才能创建僵尸进程。
同样适用于pthreads。如果分离线程,它将在完成后不会保持该进程终止状态(类似于进程)。