функція setthreadpriority

базовий пріоритету 15 для процесів IDLE_PRIORITY_CLASS. BELOW_NORMAL_PRIORITY_CLASS. NORMAL_PRIORITY_CLASS. ABOVE_NORMAL_PRIORITY_CLASS або HIGH_PRIORITY_CLASS і рівень базового пріоритету 31 для процесів REALTIME_PRIORITY_CLASS.

Якщо функція завершується успішно, величина повертається - НЕ нуль.

Якщо функція завершується з помилкою, величина повертається - нуль. Щоб отримати додаткові дані про помилки, викличте GetLastError.

Кожен потік має базовий рівень пріоритету, який визначається значенням пріоритету потоку і класом пріоритету його процесу. Система використовує базовий рівень пріоритету всіх виконуваних потоків, щоб встановити, який потік отримує наступний квант процесорного часу. Потокам встановлюється черговість обслуговування циклічних способом в кожному рівні пріоритету, і тільки тоді, коли немає ніяких виконуваних потоків на більш високому рівні, відбувається диспетчеризація потоків на більш низькому рівні.

Функція SetThreadPriority дає можливість установки базового рівня пріоритету потоку щодо класу пріоритету його процесу. Наприклад, встановлюючи THREAD_PRIORITY_HIGHEST при виклику SetThreadPriority для потоку процесу IDLE_PRIORITY_CLASS базовий рівень пріоритету потоку встановлюється в значення 6. За таблицею, яка показує, базові рівні пріоритету для кожної комбінації класу пріоритету і значення пріоритету потоку, зверніться до статті Пріоритети обслуговування.

Для процесів IDLE_PRIORITY_CLASS. BELOW_NORMAL_PRIORITY_CLASS. NORMAL_PRIORITY_CLASS. ABOVE_NORMAL_PRIORITY_CLASS і HIGH_PRIORITY_CLASS. система динамічно підвищує (форсує) базовий рівень пріоритету потоку, коли відбуваються події, які є важливими для потоку. Процеси REALTIME_PRIORITY_CLASS не отримують динамічного форсування.

Всі потоки спочатку запускаються як THREAD_PRIORITY_NORMAL. Використовуйте функції GetPriorityClass і SetPriorityClass. щоб отримувати і встановлювати клас пріоритету процесу. Використовуйте функцію GetThreadPriority. щоб отримати значення пріоритету потоку.

Використовуйте клас пріоритету процесу, щоб розрізняти між прикладними програмами ті, які є критичними по часу виконання і ті, які вимагають нормальної або нижче нормальної черговості обслуговування. Використовуйте значення пріоритету потоку, щоб розрізняти відносні пріоритети завдань процесу. Наприклад, потік, який обробляє введення даних для вікна, може мати більш високий рівень пріоритету, ніж потік, який виконує інтенсивні обчислення для ЦПУ.

При управлінні пріоритетами, будьте дуже обережними, щоб гарантувати, що високопріоритетний потік не поглине все доступне процесорний час. Потік з базовим рівнем пріоритету більш ніж 11 заважає нормальним операціям операційної системи. Використання REALTIME_PRIORITY_CLASS може стати причиною, що буфери системи введення-виведення не стануть скидати на диск, зависання миші, і так далі.

Схожі статті