Je sais que cette question est assez ancienne, mais les choses ont évolué depuis 2009.
Il y a deux choses à prendre en compte maintenant: le nombre de cœurs et le nombre de threads qui peuvent s'exécuter dans chaque cœur.
Avec les processeurs Intel, le nombre de threads est défini par l'hyperthreading qui n'est que de 2 (lorsqu'il est disponible). Mais Hyperthreading réduit votre temps d'exécution de deux, même si vous n'utilisez pas 2 threads! (c'est-à-dire 1 pipeline partagé entre deux processus - c'est bien quand vous avez plus de processus, pas si bien sinon. Plus de cœurs sont définitivement meilleurs!)
Sur d'autres processeurs, vous pouvez avoir 2, 4 ou même 8 threads. Donc, si vous avez 8 cœurs, chacun prenant en charge 8 threads, vous pouvez avoir 64 processus exécutés en parallèle sans changement de contexte.
"Pas de changement de contexte" n'est évidemment pas vrai si vous utilisez un système d'exploitation standard qui fera un changement de contexte pour toutes sortes d'autres choses hors de votre contrôle. Mais c'est l'idée principale. Certains systèmes d'exploitation vous permettent d'allouer des processeurs afin que seule votre application ait accès / utilisation dudit processeur!
D'après ma propre expérience, si vous avez beaucoup d'E / S, plusieurs threads sont bons. Si vous avez un travail intensif en mémoire (lecture source 1, lecture source 2, calcul rapide, écriture), avoir plus de threads n'aide pas. Encore une fois, cela dépend de la quantité de données que vous lisez / écrivez simultanément (c'est-à-dire si vous utilisez SSE 4.2 et lisez des valeurs de 256 bits, cela arrête tous les threads dans leur étape ... en d'autres termes, 1 thread est probablement beaucoup plus facile à implémenter et probablement presque aussi rapide, sinon plus rapide. Cela dépendra de votre architecture de processus et de mémoire, certains serveurs avancés gèrent des plages de mémoire distinctes pour des cœurs séparés, donc les threads séparés seront plus rapides en supposant que vos données sont correctement classées ... c'est pourquoi, sur certains architectures, 4 processus s'exécuteront plus rapidement que 1 processus avec 4 threads.)