来自: http: //man7.org/linux/man-pages/man3/pthread_join.3.html
未能与可连接的线程(即未分离的线程)连接会产生“僵尸线程”。避免这样做,...
我怎样才能避免这样做?我不明白,因为当我尝试加入一个线程时,为什么我会故意要失败?
来自: http: //man7.org/linux/man-pages/man3/pthread_join.3.html
未能与可连接的线程(即未分离的线程)连接会产生“僵尸线程”。避免这样做,...
我怎样才能避免这样做?我不明白,因为当我尝试加入一个线程时,为什么我会故意要失败?
我想手册页的意思是,如果您的应用程序在终止后没有加入可连接线程,只是忘记了它,那么终止的线程就会变成僵尸线程,僵尸是坏的。
也就是说,这里的失败意味着故意不执行。
为避免创建“僵尸线程”,您需要执行以下操作:
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_detach(pthread_self())
在线程入口点函数中调用,或者在thid = pthread_create(...); pthread_detach(thid)
创建线程时调用。