Когда основной поток выходит, другие потоки также выходят?

У меня проблема с основными потоками и другими потоками в том же процессе. Когда функция main возвращается, другие потоки тоже выходят? Я смущен по этому поводу.

Рассмотрим следующий тестовый код:

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 также завершают работу & # xFF0C; кто-нибудь может сказать мне, почему?

Ответы на вопрос(2)

Ваш ответ на вопрос