La afirmación de que los hilos son "livianos" es, dependiendo de la plataforma, no necesariamente confiable.
Una cadena de sistema operativo debe ser compatible con la ejecución de código nativo, p. escrito en C. Así que tiene que proporcionar una pila de tamaño decente, generalmente medida en megabytes. Por lo tanto, si inició 1000 subprocesos (quizás en un intento de admitir 1000 conexiones simultáneas a su servidor), tendría un requerimiento de memoria de 1 GB en su proceso antes de siquiera comenzar a hacer un trabajo real.
Esto es un problema real en servidores altamente escalables, por lo que no usan subprocesos como si fueran ligeros en absoluto. Ellos los tratan como recursos pesados. En su lugar, podrían crear un número limitado de subprocesos en un grupo y dejar que tomen elementos de trabajo de una cola.
Como esto significa que los hilos son duraderos y de pequeño tamaño, podría ser mejor usar procesos en su lugar. De esta forma, obtiene el aislamiento del espacio de direcciones y no hay realmente un problema con quedarse sin recursos.
En resumen: desconfíe de las afirmaciones de "comercialización" realizadas en nombre de los hilos. El procesamiento en paralelo es excelente (cada vez será más necesario), pero los hilos son solo una forma de lograrlo.
Manteniendo el binging para la "creación de procesos" y su sistema operativo, y verá la cantidad de sobrecarga para crear un proceso. –
@No reembolsos Sin devoluciones: Y encontrará que difiere considerablemente entre los sistemas operativos. –
@No reembolsos No Devoluciones: ¿qué se escucha por casualidad entre la sincronización de caché entre subprocesos en una máquina multinúcleo o la sobrecarga de cambio de contexto y guardando el estado de pila y el conjunto de registros? – zebrabox