JL
2004-10-02 09:01:44 UTC
Hola a todos
Tengo desarrollado un "driver" en lenguaje C que corre sobre Linux (RHAS
2.1). La función es bastante básica: el hilo principal está siempre
escuchando en un socket, al llegar una conexion crea un hilo que atienda la
misma y queda nuevamente esperando conexiones.
El problema es que llega un momento en que el hilo padre ya no puede seguir
creando hilos, es decir, la función pthread_create(&thread_id, &funcion,
NULL) me devuelve un valor distinto a cero.
Buscando en Google, encontré que alguno recomendaba poner el hilo "hijo" en
modalidad "detach" antes del pthread_exit(). Es decir:
pthread_detach(thread_id);
pthread_exit(NULL);
pero esto no ha solucionado el problema. Igualmente llega un momento en que
ya no pueden seguir creándose hilos.
Es esto un BUG o solamente una mala práctica de programación de mi parte ?
Salu2,
JL
PD: si necesitasen el código fuente completo, solo tienen que pedirlo.
Tengo desarrollado un "driver" en lenguaje C que corre sobre Linux (RHAS
2.1). La función es bastante básica: el hilo principal está siempre
escuchando en un socket, al llegar una conexion crea un hilo que atienda la
misma y queda nuevamente esperando conexiones.
El problema es que llega un momento en que el hilo padre ya no puede seguir
creando hilos, es decir, la función pthread_create(&thread_id, &funcion,
NULL) me devuelve un valor distinto a cero.
Buscando en Google, encontré que alguno recomendaba poner el hilo "hijo" en
modalidad "detach" antes del pthread_exit(). Es decir:
pthread_detach(thread_id);
pthread_exit(NULL);
pero esto no ha solucionado el problema. Igualmente llega un momento en que
ya no pueden seguir creándose hilos.
Es esto un BUG o solamente una mala práctica de programación de mi parte ?
Salu2,
JL
PD: si necesitasen el código fuente completo, solo tienen que pedirlo.