Ce n'est pas vraiment une question qui peut répondre à moins que vous spécifiez le système d'exploitation au minimum.
C++ lui-même ne connaît rien des threads, ils sont un service fourni par le système d'exploitation à l'environnement d'exécution, et dépendent de ce système pour son implémentation.
D'une manière générale, je suis à peu près certain que Linux planifie les threads de façon indépendante, de sorte que plusieurs threads puissent être répartis sur différents processeurs et/ou cœurs. Je pense que Windows ferait la même chose. Certains OS 'vous permettront de spécifier l'affinité des threads, la possibilité pour les threads (et parfois les groupes de threads) de coller avec un seul CPU mais, encore une fois, c'est un problème de système d'exploitation plutôt qu'un C++. Pour Windows (selon votre commentaire), vous pouvez lire this introduction. Windows fournit une fonction SetProcessAffinityMask()
pour contrôler l'affinité de tous les threads dans un processus donné ou SetThreadAffinityMask()
pour contrôler les threads indépendamment. Mais, habituellement, vous trouverez qu'il est préférable de laisser ces derniers seuls et de laisser le système d'exploitation trier - à moins que vous ayez un besoin spécifique pour un comportement différent, le système d'exploitation prendra presque certainement les bonnes décisions.
désolé, j'utilise le C++ visuel et je crée le programme pour Windows – ghiboz
+1 Je seconde la suggestion de laisser le masque d'affinité de processus seul tant que vous n'en avez pas vraiment besoin. (Lors de la lecture de temps de haute précision, il est malheureusement nécessaire) – daramarak