我们应该显式加入一个线程来完成吗?我的意思是,这就像进程世界:当我们不等待它们完成时,我们就会得到僵尸进程。
最佳答案
不一定;如果您不想显式等待线程,则可以随时分离该线程。
有一些事情需要考虑:
- 如果你不加入非分离线程,它就会变成僵尸线程(是的,有这样的事情)
- 如果您不加入线程,您的主线程可能会在“子线程”结束之前结束
- 一旦分离线程,就无法将其重新连接
如何分离线程?有两种方法:
detachstate = 1;
rc = pthread_attr_setdetachstate(&attr, detachstate);
if (rc) {
handle error;
}
pthread_create(&thr, &attr, th_fun, NULL);
第二种方式
void *th_fun(void *arg)
{
pthread_detach(pthread_self());
}
关于c - 我们是否应该显式加入一个线程来完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6580918/