Tengo un problema sobre el hilo principal y otro hilo en el mismo proceso. Cuando la función principal regresa, ¿el otro hilo sale también? Tengo algunos me confunden. Y escribo algunos código de prueba, como este:salida del hilo principal, ¿hay otra salida también?
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;
}
Cuando el "hilo principal regresa". apagar, thread test1 y test2 también salir, cualquiera me puede decir por qué?
El texto de la pregunta no coincide con el cuerpo de la pregunta. ¿Esto es lo que sucede cuando sale el hilo principal? ¿O se trata de lo que sucede cuando el hilo principal regresa de la función 'main'? (Obviamente, el hilo no puede regresar si sale. Puede hacer uno u otro). –