2016-10-16 2 views
1

Мне было интересно, как заставить программу на C++ в Visual Studio работать на определенных ядрах/ядрах (на компьютерах, которые имеют более одного).сделать программу на C++ запущенной на конкретном ядре в windows

я нашел this статью, но относится к C в Linux (и я использую Visual Studio на окнах)

также имеет версию окна, я использую, неважно?

+2

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 –

+3

[SetProcessAffinityMask] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms686223 (v = vs.85) .aspx) –

+0

, что я понял из этой ссылки, состоит в том, что: 1) невозможно выбрать конкретное ядро ​​в окнах, а «маска близости» - это инструмент для управления им понемногу, хотя в конечном итоге операционная система делает вызов. 2) его можно было сделать только в потоках. эта концепция не имеет смысла для меня, потому что я слышал графические программы, которые позволяют пользователю выбирать ядра специально для рендеринга своих программ. – yd1

ответ

3

Возможно использование функции Windows API SetThreadIdealProcessorEx(). Эта функция применима к Windows 7 или новее. В старых системах можно использовать SetThreadIdealProcessor(), хотя и с некоторыми ограничениями.

Это, по мнению замечаний в первой ссылке

Задания нити идеального процессора обеспечивает подсказку планировщика о предпочтительном процессоре для потока. Планировщик запускает поток на идеальном процессоре потока, когда это возможно.

Мне неизвестна какая-либо функция, которая заставляет планировщик запускать поток на указанном процессоре. Поэтому, давая подсказку, с которой планировщик будет пытаться действовать, вероятно, наиболее близка к вашему требованию.

Возможно, было бы целесообразно также использовать SetProcessorAffinityMask(), который позволяет указать процессоры, на которых может выполняться процесс, поскольку маловероятно, что поток может работать на процессоре, который не находится в маске сродства родительского процесса ,

Внимательно прочитайте документацию для этих функций, так как сама система может налагать ограничения на то, какие процессоры могут запускать процесс.

Смежные вопросы