Tengo problemas en mi primera incursión en hilos en C. Estoy intentando (por ahora) escribir un programa de servidor muy simple que acepte una conexión de socket y comience un nuevo hilo para procesarlo. Parece funcionar bien, excepto que solo creará unos 300 hilos (303, a veces 304) antes de que pthread_create() falle con el código EAGAIN, lo que significa:¿Por qué pthread_create() falla con solo 2 subprocesos activos?
"El sistema carecía de los recursos necesarios para crear otro hilo, o se excedería el límite impuesto por el sistema sobre el número total de subprocesos en un proceso {PTHREAD_THREADS_MAX} ".
Esto es no 303 hilos al mismo tiempo - cada hilo sale, lo que es confirmado por gdb. Cada vez que se llama a la función de solicitud de proceso hay dos hilos en ejecución.
Lo que significa que "el sistema carecía de los recursos necesarios". Mi pregunta es (y puede ser un poco estúpido) ¿cuáles son estos recursos? Es de suponer que es una pérdida de memoria en mi programa (ciertamente posible, incluso probable), pero hubiera pensado que incluso así podría manejar más de 300 considerando que el resto del programa hace muy poco.
¿Cómo puedo saber cuánta memoria tiene mi programa disponible para confirmar que se está quedando sin ella? Hay mucha memoria y libre de intercambio, así que presumiblemente hay un límite artificial impuesto por el sistema operativo (Linux).
Gracias
Se puede publicar ¿El fragmento de código que crea y destruye los hilos? –