Возможно использование функции Windows API SetThreadIdealProcessorEx()
. Эта функция применима к Windows 7 или новее. В старых системах можно использовать SetThreadIdealProcessor()
, хотя и с некоторыми ограничениями.
Это, по мнению замечаний в первой ссылке
Задания нити идеального процессора обеспечивает подсказку планировщика о предпочтительном процессоре для потока. Планировщик запускает поток на идеальном процессоре потока, когда это возможно.
Мне неизвестна какая-либо функция, которая заставляет планировщик запускать поток на указанном процессоре. Поэтому, давая подсказку, с которой планировщик будет пытаться действовать, вероятно, наиболее близка к вашему требованию.
Возможно, было бы целесообразно также использовать SetProcessorAffinityMask()
, который позволяет указать процессоры, на которых может выполняться процесс, поскольку маловероятно, что поток может работать на процессоре, который не находится в маске сродства родительского процесса ,
Внимательно прочитайте документацию для этих функций, так как сама система может налагать ограничения на то, какие процессоры могут запускать процесс.
https://msdn.microsoft.com/en-us/library/windows/desktop/ms686247(v=vs.85).aspx или https://msdn.microsoft.com/en-us/library/ windows/desktop/ms686223 (v = vs.85) .aspx –
[SetProcessAffinityMask] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms686223 (v = vs.85) .aspx) –
, что я понял из этой ссылки, состоит в том, что: 1) невозможно выбрать конкретное ядро в окнах, а «маска близости» - это инструмент для управления им понемногу, хотя в конечном итоге операционная система делает вызов. 2) его можно было сделать только в потоках. эта концепция не имеет смысла для меня, потому что я слышал графические программы, которые позволяют пользователю выбирать ядра специально для рендеринга своих программ. – yd1