Vous pouvez forcer votre fils à courir sur des noyaux spécifiques, mais en général, vous devez laisser le système d'exploitation en prendre soin. Le système d'exploitation en gère une grande partie automatiquement. Si quatre threads s'exécutent sur un système quadricœur, le système d'exploitation les planifie sur les quatre cœurs sauf si vous prenez des mesures pour l'empêcher. Le système d'exploitation fera également des choses comme essayer de garder un thread individuel fonctionnant sur le même noyau plutôt que de les déplacer pour de meilleures performances, ne pas planifier deux threads en cours d'exécution sur le même noyau hyperthreaded s'il y a des cœurs inactifs disponibles, etc.
De même, plutôt que de créer de nouveaux threads pour le travail, vous devez utiliser le thread pool. Le système adaptera cela au nombre de processeurs disponibles sur le système.
Windows Internals est un bon livre pour couvrir le fonctionnement du planificateur Windows.