我们应该明确加入一个线程来完成

时间:2011-07-05 10:02:55

标签: c pthreads

我们应该明确加入一个线程来完成吗?我的意思是这就像过程世界:当我们不等他们完成时我们得到了僵尸进程。

1 个答案:

答案 0 :(得分:3)

不一定;如果你不想明确地等待它,你总是可以分离一个线程。

有几件事需要考虑:

  • 如果你没有加入一个非分离的线程,它将成为一个僵尸线程(是的,有这样的东西)
  • 如果您没有加入主题,主线程可能会在“子”结束之前结束
  • 分离线程后无法将其重新附加

你如何分离线程?有两种方法:

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());
}