Поделиться через


Функция SetThreadIdealProcessor (processthreadsapi.h)

Задает предпочтительный процессор для потока. Система по возможности планирует потоки на предпочитаемых процессорах.

В системе с более чем 64 процессорами эта функция задает для предпочтительного процессора логический процессор в группе процессоров , которой назначен вызывающий поток. Используйте функцию SetThreadIdealProcessorEx , чтобы указать группу процессоров и предпочтительный процессор.

Синтаксис

DWORD SetThreadIdealProcessor(
  [in] HANDLE hThread,
  [in] DWORD  dwIdealProcessor
);

Параметры

[in] hThread

Дескриптор потока, для которого следует задать предпочтительный процессор. Дескриптор должен иметь право доступа THREAD_SET_INFORMATION. Дополнительные сведения см. в разделе Безопасность потоков и права доступа.

[in] dwIdealProcessor

Номер предпочтительного процессора для потока. Это значение отсчитывается от нуля. Если этот параметр MAXIMUM_PROCESSORS, функция возвращает текущий идеальный процессор, не изменяя его.

Возвращаемое значение

Если функция выполняется успешно, возвращаемое значение — это предыдущий предпочтительный процессор.

Если функция завершается сбоем, возвращается значение (DWORD) – 1. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

Для определения количества процессоров на компьютере можно использовать функцию GetSystemInfo . Вы также можете использовать функцию GetProcessAffinityMask для проверка процессоров, на которых разрешено выполнение потока. Обратите внимание, что GetProcessAffinityMask возвращает битовую маску, в то время как SetThreadIdealProcessor использует целочисленное значение для представления процессора.

Начиная с Windows 11 и Windows Server 2022, в системе с более чем 64 процессорами сопоставления процессов и потоков по умолчанию охватывают все процессоры в системе во всех группах процессоров. Функция SetThreadIdealProcessor задает для предпочтительного процессора логический процессор в основной группе потока.

Чтобы скомпилировать приложение, использующее эту функцию, определите _WIN32_WINNT как 0x0400 или более поздней версии. Дополнительные сведения см. в разделе Использование заголовков Windows.

Windows 8.1 и Windows Server 2012 R2. Эта функция поддерживается для приложений Магазина Windows на Windows 8.1, Windows Server 2012 R2 и более поздних версиях.

Требования

Требование Значение
Минимальная версия клиента Windows XP [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2003 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header processthreadsapi.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

GetProcessAffinityMask

GetSystemInfo

Несколько процессоров

OpenThread

Функции процессов и потоков

SetThreadAffinityMask

SetThreadIdealProcessorEx

Потоки