Sé que esta pregunta es bastante antigua, pero las cosas han evolucionado desde 2009.
Ahora hay dos cosas a tener en cuenta: la cantidad de núcleos y la cantidad de hilos que pueden ejecutarse dentro de cada núcleo.
Con los procesadores Intel, el número de subprocesos está definido por Hyperthreading, que es solo 2 (cuando está disponible). ¡Pero Hyperthreading reduce su tiempo de ejecución en dos, incluso cuando no usa 2 hilos! (es decir, 1 canalización compartida entre dos procesos; esto es bueno cuando tiene más procesos, de lo contrario no es tan bueno. ¡Más núcleos son definitivamente mejores!)
En otros procesadores, puede tener 2, 4 o incluso 8 hilos. Entonces, si tiene 8 núcleos, cada uno de los cuales admite 8 subprocesos, podría tener 64 procesos ejecutándose en paralelo sin cambio de contexto.
"Sin cambio de contexto" obviamente no es cierto si se ejecuta con un sistema operativo estándar que hará el cambio de contexto para todo tipo de otras cosas fuera de su control. Pero esa es la idea principal. ¡Algunos sistemas operativos le permiten asignar procesadores para que solo su aplicación tenga acceso / uso de dicho procesador!
Desde mi propia experiencia, si tiene muchas E / S, múltiples hilos es bueno. Si tiene un trabajo muy intenso en memoria (leer fuente 1, leer fuente 2, cálculo rápido, escribir), entonces tener más hilos no ayuda. Nuevamente, esto depende de la cantidad de datos que lea / escriba simultáneamente (es decir, si usa SSE 4.2 y lee valores de 256 bits, eso detiene todos los hilos en su paso ... en otras palabras, 1 hilo es probablemente mucho más fácil de implementar y probablemente casi tan rápido si no es realmente más rápido. Esto dependerá de su arquitectura de proceso y memoria, algunos servidores avanzados administran rangos de memoria separados para núcleos separados, por lo que los hilos separados serán más rápidos suponiendo que sus datos se archiven correctamente ... por eso, en algunos arquitecturas, 4 procesos se ejecutarán más rápido que 1 proceso con 4 hilos).