На самом деле это не тот вопрос, на который можно ответить, если вы не укажете операционную систему как минимум.
Сам C ++ ничего не знает о потоках, они являются службой, предоставляемой ОС для среды выполнения, и зависят от этой ОС в своей реализации.
Как общее замечание, я вполне уверен, что Linux планирует потоки независимо, так что несколько потоков могут быть распределены по разным процессорам и / или ядрам. Я подозреваю, что Windows сделает то же самое.
Некоторые ОС 'позволяют вам указывать сходство потоков, способность потоков (а иногда и групп потоков) придерживаться одного ЦП, но, опять же, это проблема ОС, а не С ++.
Для Windows (согласно вашему комментарию) вы можете прочитать это введение . Windows предоставляет SetProcessAffinityMask()
функцию для контроля сходства всех потоков в данном процессе или SetThreadAffinityMask()
для независимого управления потоками.
Но, как правило, вы обнаружите, что лучше оставить их в покое и позволить ОС разобраться с этим - если у вас нет особой потребности в другом поведении, ОС почти наверняка примет правильные решения.