Приоритеты указывают операционной системе, сколько процессорного времени выделяется для данного потока. Для критических задач можно установить наивысший приоритет, для менее значимых - более низкий приоритет.
Приоритет каждого потока складывается из двух составляющих: - класса приоритета - приоритета процесса, породившего поток; - относительного приоритета - приоритета самого потока.
Вызывая CreateProcess, Вы можете указать в ее параметр fdwCreate нужный класс приоритета. Идентификаторы этих классов приведены в следующей таблице.
Класс приоритета | Идентификатор |
Real-time | REALTIME_PRIORITY_CLASS |
High | HIGH_PRIORITY_CLASS |
Above normal | ABOVE_NORMAL_PRIORITY_CLASS |
Normal | NORMAL_PRIORITY_CLASS |
Below normal | BELOW_NORMAL_PRIORITY_CLASS |
Idle | IDLE_PRIORITY_CLASS |
При работе приложения под Windows NT изменение класса приоритета приложения требует специальных привилегий для процесса. Вы можете присвоить процессам определенные классы приоритетов, но они могут быть отключены системным администратором.
Для определения текущего и установки требуемого класса приоритета используются функции GetPrioriryClass И SetPriorityClass соответственно. Для установки высокого класса приоритета (High) для вашего приложения можно, например, использовать следующий код:
|
|
If not SetPriorityClass(GetCurrentProcess, HIGH_PRIORITY_CLASS) then
ShowMessage ('Ошибка установки класса приоритета');
Эта функция меняет класс приоритета процесса, определяемого описателем hProcess, в соответствии со значением параметра fdwPriority. Последний должен содержать одно из значений, указанных в таблице выше. Поскольку SetPriorityClass принимает описатель процесса, Вы можете изменить приоритет любого процесса, выполняемого в системе, — если его описатель известен и у Вас есть соответствующие права доступа.
При запуске из оболочки командного процессора начальный приоритет программы тоже обычный. Однако, запуская ее командой Start, можно указать ключ, определяющий начальный приоритет. Так, следующая команда, введенная в оболочке командного процессора, заставит систему запустить приложение Calculator и присвоить ему приоритет idle:
C:\>START /LOW CALC.EXE
Команда Start допускает также ключи /BELOWNORMAL, /NORMAL, /ABOVENORMAL, /HIGH и /REALTIME, позволяющие начать выполнение программы с соответствующим классом приоритета. Разумеется, после запуска программа может вызвать SetPriorityClass и установить себе другой класс приоритета.