El nproc
el límite del que está hablando se aplica a entidades ejecutables , por lo tanto, limita los hilos (y, por lo tanto, los procesos que los contienen) . Cada proceso tiene al menos un subproceso (el subproceso principal), por lo que solo se pueden ejecutar los subprocesos. . Estrictamente hablando, los procesos no son "ejecutables".
Esta respuesta explica la diferencia real entre subprocesos y procesos en Linux.
Probé el código en daya La respuesta de (también se agregó sleep(1);
en el código del hilo) y a diferencia de él (?!), llegué al límite cuando se crearon demasiados hilos:pthread_create()
estaba devolviendo EAGAIN
. El pthread_create(3)
la documentación dice lo siguiente sobre este error:
OTRA VEZ
Recursos insuficientes para crear otro subproceso o se encontró un límite impuesto por el sistema en la cantidad de subprocesos. El último caso puede ocurrir de dos maneras:se alcanzó el límite de recursos blandos RLIMIT_NPROC (establecido a través de setrlimit(2)), que limita la cantidad de procesos para una ID de usuario real; o se alcanzó el límite de todo el sistema del kernel en el número de subprocesos, /proc/sys/kernel/threads-max.
No veo ninguna mención de un específico límite por subproceso en el código fuente del kernel, solo veo RLIMIT_NPROC
allí, cuál es el límite que puedes cambiar en limits.conf
(con nproc
), ulimit -u
o setrlimit(2)
.