|
|
||
6. Динамическое изменение приоритетов потоков |
||
Базовый приоритет потока может динамически изменяться системой, если этот приоритет находится в пределах между уровнями от 0 до 15. При получении потоком сообщения или при его переходе в состояние готовности система повышает базовый приоритет этого потока на 2. В процессе выполнения базовый приоритет такого потока понижается на 1, с каждым отработанным квантом времени, но никогда не опускается ниже исходного базового приоритета. В операционной системе Windows 2000 возможно программное управление режимом динамического изменения базовых приоритетов потоков. Отмена или возобновление режима динамического изменения базового приоритета всех потоков, исполняемых в контексте процесса, выполняется при помощи функции setProcessPriorityBoost, которая имеет следующий прототип: Если функция SetProcessPriorityBoost завершается успешно, то она возвращает ненулевое значение, в противном случае возвращаемое значение равно FALSE. Значение параметра DisablePriorityBoost устанавливает состояние режима динамического повышения базовых приоритетов потоков. Если это значение равно TRUE, то режим динамического повышения базовых приоритетов потоков, выполняемых в контексте процесса с дескриптором hProcess, запрещается. Если же значение этого параметра равно FALSE, то, наоборот, режим динамического повышения базовых приоритетов этих потоков разрешается. Узнать, разрешен ли режим динамического повышения базовых приоритетов потоков, можно посредством вызова функции GetProcessPriorityBoost, которая имеет следующий прототип: Если функция GetProcessPriorityBoost завершается успешно, то она возвращает ненулевое значение, в противном случае возвращаемое значение равно false. Значение булевой переменной, на которую указывает параметр pDisablePriorityBoost, определяет состояние режима динамического повышения базовых приоритетов потоков. Если это значение равно true, то режим динамического повышения базовых приоритетов потоков, выполняемых в контексте процесса с дескриптором hProcess, запрещен. Если же значение этого параметра равно false, то, наоборот, режим динамического повышения базовых приоритетов этих потоков разрешен. |
||
Для отмены или возобновления режима динамического изменения базового приоритета только одного потока используется функция setThreadPriorityBoost, которая имеет следующий прототип: Эта функция работает аналогично функции SetProcessPriorityBoost, НО ТОЛЬКО ДЛЯ ОДНОГО потока с дескриптором hThread. |
||
|
||
6 |