来自:http://man7.org/linux/man-pages/man3/pthread_join.3.html情况时`pthread_join`可以失败/不被调用并且导致僵尸线程
衰竭的线程是可连接(即,一个没有被分离的),产生“僵尸线程”加入。避免这样做,...
我该如何避免这样做?我不明白,因为当我尝试加入一个线程时,为什么我故意要失败?
来自:http://man7.org/linux/man-pages/man3/pthread_join.3.html情况时`pthread_join`可以失败/不被调用并且导致僵尸线程
衰竭的线程是可连接(即,一个没有被分离的),产生“僵尸线程”加入。避免这样做,...
我该如何避免这样做?我不明白,因为当我尝试加入一个线程时,为什么我故意要失败?
我想手册页意味着如果您的应用程序在终止后未加入可连接的线程,但只是忘记了它,则终止的线程变成僵尸线程,而僵尸是不好的。
也就是说,失败这里的意思是故意不执行。
Failure to join with a thread that is joinable (i.e., one that is not
detached), produces a "zombie thread". Avoid doing this
它表明你应该确保你处理所有可能导致pthread_join
不被调用的线程。 (并导致僵尸)
而且它指出,
There is no pthreads analog of waitpid(-1, &status, 0), that is,
"join with any terminated thread".
您没有任何功能,如在流程检查的情况下,所以它的更好,你避免在你的代码妥善处理案件缺少pthread_join
通话。
你能解释一些代码的例子吗?我不明白你的意思是什么,你应该确保你处理所有可能导致pthread_join不被调用的线程。(并导致僵尸)“ – abc 2013-05-08 18:50:58
为了避免制造“僵尸线程” 你需要做这些事情:
避免僵尸最简单的方法是使用分离线程功能。在线程入口点函数中调用,或者在创建线程时调用thid = pthread_create(...); pthread_detach(thid)
。
*您可以通过*不这样做* – 2013-05-08 15:58:21
“*未能加入... *”意思是“*不会调用'pthread_join()'... *”。 – alk 2013-05-08 15:59:02
请看[this](http://stackoverflow.com/questions/10870599/does-pthread-join-failure-cause-child-process-to-be-zombies)链接 – 2013-05-08 16:03:07