c – 主线程出口,还有其他退出吗?

我在同一个进程中有一个关于主线程和其他线程的问题.当主函数返回时,其他线程也退出我有点困惑我我写了一些测试代码,像这样:
void* test1(void *arg)
{
    unsigned int i = 0;
    while (1){
        i+=1;
    }
    return NULL;
}

void* test2(void *arg)
{
    long double i = 1.0;
    while (1){
        i *= 1.1;
    }
    return NULL;
}

void startThread ( void * (*run)(void*),void *arg) {
  pthread_t t;
  pthread_attr_t attr;
  if (pthread_attr_init(&attr) != 0
      || pthread_create(&t,&attr,run,arg) != 0
      || pthread_attr_destroy(&attr) != 0
      || pthread_detach(t) != 0) {
    printf("Unable to launch a thread\n");
    exit(1);
  }
}

int main()
{
    startThread(test1,NULL);
    startThread(test2,NULL);

    sleep(4);
    printf("main thread return.\n");

    return 0;
}

当“主线程返回”时.推出线程test1和test2也退出,有人可以告诉我为什么吗?

解决方法

当主线程返回时,它终止整个进程.这包括所有其他线程.当你打电话退出时也会发生同样的事情.

pthread_detach的目的是使它不需要与其他线程加入,以释放他们的资源.分离线程不会使它存在于过程终止之后,它仍将与所有其他线程一起销毁.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...