Ich habe ein Problem über Haupt-Thread und anderen Thread in demselben Prozess. Wenn die Hauptfunktion zurückkehrt, wird der andere Thread ebenfalls beendet? Ich habe etwas verwirrt mich. Und ich schreibe einige Test-Code, wie folgt aus: "Haupt-Thread return"Haupt-Thread-Ausgang, andere Ausgänge auch?
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 die raus, thread test1 und test2 auch exit, kann mir jemand sagen warum?
Der Text der Frage stimmt nicht mit dem Fragetext überein. Geht es darum, was passiert, wenn der Haupt-Thread beendet wird? Oder ist es das, was passiert, wenn der Haupt-Thread von der Hauptfunktion zurückkehrt? (Natürlich kann der Thread nicht zurückkehren, wenn er beendet wird. Er kann das eine oder das andere tun.) –