События
19 нояб., 23 - 21 нояб., 23
Получите конкурентное преимущество, необходимое с помощью мощных решений ИИ и облака, посещая Microsoft Ignite online.
ЗарегистрироватьсяЭтот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
Задает сведения для указанного потока.
BOOL SetThreadInformation(
[in] HANDLE hThread,
[in] THREAD_INFORMATION_CLASS ThreadInformationClass,
LPVOID ThreadInformation,
[in] DWORD ThreadInformationSize
);
[in] hThread
Дескриптор потока. Дескриптор должен иметь THREAD_SET_INFORMATION права доступа. Дополнительные сведения см. в разделе Безопасность потоков и права доступа.
[in] ThreadInformationClass
Класс сведений для задания. Поддерживаются только значения ThreadMemoryPriority и ThreadPowerThrottling.
ThreadInformation
Указатель на структуру, содержащую тип сведений, указанный параметром ThreadInformationClass .
Если параметр ThreadInformationClass имеет значение ThreadMemoryPriority, этот параметр должен указывать на MEMORY_PRIORITY_INFORMATION структуру.
Если параметр ThreadInformationClass имеет значение ThreadPowerThrottling, этот параметр должен указывать на THREAD_POWER_THROTTLING_STATE структуру.
[in] ThreadInformationSize
Размер структуры в байтах, заданной параметром ThreadInformation .
Если параметр ThreadInformationClass имеет значение ThreadMemoryPriority, этот параметр должен иметь значение sizeof(MEMORY_PRIORITY_INFORMATION)
.
Если параметр ThreadInformationClass имеет значение ThreadPowerThrottling, этот параметр должен иметь значение sizeof(THREAD_POWER_THROTTLING_STATE)
.
Если функция выполняется успешно, возвращается ненулевое значение.
Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Чтобы повысить производительность системы, приложения должны использовать функцию SetThreadInformation с ThreadMemoryPriority , чтобы снизить приоритет памяти потоков, которые выполняют фоновые операции или обращаются к файлам и данным, которые не должны быть доступны в ближайшее время. Например, приложение для защиты от вредоносных программ может снизить приоритет потоков, участвующих в сканировании файлов.
Приоритет памяти помогает определить, как долго страницы остаются в рабочем наборе процесса, прежде чем они будут обрезаны. Приоритет памяти потока определяет минимальный приоритет физических страниц, добавляемых в рабочий процесс, заданный этим потоком. Когда диспетчер памяти обрезает рабочий набор, он обрезает страницы с более низким приоритетом перед страницами с более высоким приоритетом. Это повышает общую производительность системы, так как страницы с более высоким приоритетом с меньшей вероятностью будут обрезаны из рабочего набора, а затем активируют ошибку страницы при повторном обращении к ним.
ThreadPowerThrottling включает политики регулирования в потоке, которые можно использовать для балансировки производительности и энергоэффективности в тех случаях, когда оптимальная производительность не требуется. Когда поток выбирает включение THREAD_POWER_THROTTLING_EXECUTION_SPEED
, поток будет классифицирован как EcoQoS. Система будет пытаться повысить энергоэффективность с помощью таких стратегий, как снижение частоты ЦП или использование более энергоэффективных ядер. EcoQoS следует использовать, если работа не способствует взаимодействию с пользователем на переднем плане, что обеспечивает более длительное время работы батареи и снижает уровень тепла и шума вентилятора. EcoQoS не следует использовать для критически важных для производительности или переднего плана взаимодействия пользователей. (До Windows 11 уровень EcoQoS не существовал, и вместо этого процесс был помечен как LowQoS. Если приложение явно не включает THREAD_POWER_THROTTLING_EXECUTION_SPEED
, система будет использовать собственную эвристические средства для автоматического определения уровня качества обслуживания. Дополнительные сведения см. в разделе Качество обслуживания.
В следующем примере показано, как вызвать SetThreadInformation с помощью ThreadMemoryPriority , чтобы задать низкий приоритет памяти в текущем потоке.
DWORD ErrorCode;
BOOL Success;
MEMORY_PRIORITY_INFORMATION MemPrio;
//
// Set low memory priority on the current thread.
//
ZeroMemory(&MemPrio, sizeof(MemPrio));
MemPrio.MemoryPriority = MEMORY_PRIORITY_LOW;
Success = SetThreadInformation(GetCurrentThread(),
ThreadMemoryPriority,
&MemPrio,
sizeof(MemPrio));
if (!Success) {
ErrorCode = GetLastError();
fprintf(stderr, "Set thread memory priority failed: %d\n", ErrorCode);
}
В следующем примере показано, как вызвать SetThreadInformation с threadPowerThrottling для управления качеством обслуживания потока.
THREAD_POWER_THROTTLING_STATE PowerThrottling;
ZeroMemory(&PowerThrottling, sizeof(PowerThrottling));
PowerThrottling.Version = THREAD_POWER_THROTTLING_CURRENT_VERSION;
//
// EcoQoS
// Turn EXECUTION_SPEED throttling on.
// ControlMask selects the mechanism and StateMask declares which mechanism should be on or off.
//
PowerThrottling.ControlMask = THREAD_POWER_THROTTLING_EXECUTION_SPEED;
PowerThrottling.StateMask = THREAD_POWER_THROTTLING_EXECUTION_SPEED;
SetThreadInformation(GetCurrentThread(),
ThreadPowerThrottling,
&PowerThrottling,
sizeof(PowerThrottling));
//
// HighQoS
// Turn EXECUTION_SPEED throttling off.
// ControlMask selects the mechanism and StateMask is set to zero as mechanisms should be turned off.
//
PowerThrottling.ControlMask = THREAD_POWER_THROTTLING_EXECUTION_SPEED;
PowerThrottling.StateMask = 0;
SetThreadInformation(GetCurrentThread(),
ThreadPowerThrottling,
&PowerThrottling,
sizeof(PowerThrottling));
//
// Let system manage all power throttling. ControlMask is set to 0 as we don’t want
// to control any mechanisms.
//
PowerThrottling.ControlMask = 0;
PowerThrottling.StateMask = 0;
SetThreadInformation(GetCurrentThread(),
ThreadPowerThrottling,
&PowerThrottling,
sizeof(PowerThrottling));
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 [только классические приложения] |
Минимальная версия сервера | Windows Server 2012 [только классические приложения] |
Целевая платформа | Windows |
Header | processthreadsapi.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |
События
19 нояб., 23 - 21 нояб., 23
Получите конкурентное преимущество, необходимое с помощью мощных решений ИИ и облака, посещая Microsoft Ignite online.
Зарегистрироваться