De ma connaissance limitée des systèmes d'exploitation, je crois que chaque processus a au moins un thread, et ce sont ces threads qui sont planifiés, pas les processus eux-mêmes. Le processus contient simplement des informations sur le programme et les unités d'exécution qu'il a définies. De cette façon, une application à thread unique reçoit le même traitement qu'une application multithread, mais l'application multithread peut mieux utiliser les ressources.
Par exemple, supposons que nous avons deux processus avec deux threads chacun et une seule application threadée, travaillant tous dur sur un processeur dual core (ou dual CPU, cela ne fait aucune différence ici)
Process A
|_Thread A-1
|_Thread A-2
Process B
|_Thread B-1
|_Thread B-2
Process C
|_Thread C
Chaque thread peut être planifié sur tous les cœurs du processeur et la charge est équilibrée par le planificateur du système d'exploitation.
Si nous allons ensuite configurer l'affinité du processeur pour le processus B pour le limiter à un processeur, tous les threads de ce processus sont également liés à ce processeur et ne fonctionneront pas sur un autre processeur. Faire de même pour le processus C n'entraînera aucun changement réel car il ne peut fonctionner que sur un seul processeur à la fois.