Wenn der Haupt-Thread beendet wird, werden auch andere Threads beendet?

Ich habe ein Problem mit Hauptthreads und anderen Threads im selben Prozess. Wenn die Hauptfunktion zurückkehrt, werden auch die anderen Threads beendet? Das verwirrt mich.

Betrachten Sie den folgenden Testcode:

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

Wenn der "Haupt-Thread zurückkehrt." druckt aus, thread test1 und test2 auch beenden , kann mir jemand sagen warum?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage