c - 我们是否应该显式加入一个线程来完成

标签 c pthreads

我们应该显式加入一个线程来完成吗?我的意思是,这就像进程世界:当我们不等待它们完成时,我们就会得到僵尸进程。

最佳答案

不一定;如果您不想显式等待线程,则可以随时分离该线程。

有一些事情需要考虑:

  • 如果你不加入非分离线程,它就会变成僵尸线程(是的,有这样的事情)
  • 如果您不加入线程,您的主线程可能会在“子线程”结束之前结束
  • 一旦分离线程,就无法将其重新连接

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

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/

相关文章:

c++ - 条件变量 - 为什么在调用 pthread_cond_wait() 之前调用 pthread_cond_signal() 是一个逻辑错误?

c - 线程打开套接字

c - 如何查看一个detached属性的线程退出后是否释放了系统资源?

c - 为什么 super 用户可以比非特权用户同时运行更多的进程?

c - 二维数组说明

c++ - 多线程概念题

c++ - 如何在 [action-if-true] 中执行多个操作

c - 在 C 中,为什么这个语句 - 'i = 5i' 编译并将 'i' 设置为零?

c - 使用两个缓冲区和两个互斥锁的线程同步: C

c++ - Pthread_setaffinity_np 参数无效