Пріоритет має значення лише тоді, коли є більше потоків для запуску, ніж наявних процесорних ядер. Коли це трапляється, керуйте пріоритетом, які потоки потрібно запустити. У більшості систем не вистачає обчислень для будь-яких суперечок на процесорі: потоки заблоковані , очікуючи, що щось станеться. Це може чекати, коли ви щось введете, перемістіть мишу, торкніться екрана або дані надійдуть з диска, мережі, якогось іншого пристрою, який ви підключили, або для того, щоб інша нитка закінчила роботу над критичними даними будова. Можливо, частину програми може чекати, щоб прочитати з диска або якусь пам'ять, яку було замінено, щоб прочитати її назад, а не явно читати файл.
У Windows планувальник зберігає чергу з ниток, що виконується, на кожному рівні пріоритету. Коли він приймає рішення щодо планування - або те, що нитка вичерпала свій квант (дозволений час, перш ніж щось інше потрібно запустити), тобто інший потік повинен отримати поворот, або потік заблокований і більше не запускається, або з більш високим пріоритетом нитка стала розблокованою - наступний потік у черзі на верхньому рівні пріоритету з будь-якими потоками, які можна виконати. Якщо нитка, що запущена, використала свій квант, вона ставиться в кінці черги. Якщо це єдиний потік на рівні пріоритету, який можна запустити, і немає інших вищих пріоритетів, але не запущених ниток, він отримає ще один виток.
У багатоядерних / багатопроцесорних системах можуть існувати обмеження, щодо яких ядра можуть працювати. Крім того, система намагається зберегти потоки в їх ідеальному ядрі та в їх вузлі NUMA, щоб дані потоку, ймовірно, все ще знаходилися в кеші цього ядра, і він отримав швидкий доступ до створених ним даних. Нитки все одно будуть проходити на неідеальних ядрах, якщо немає вибору, що слід запустити далі.
Система використовує різні динамічні збільшення пріоритету та динамічні квантові розміри, щоб програма переднього плану отримувала більше часу (якщо це потрібно), ніж фонові процеси, і щоб процеси могли швидко реагувати після завершення операцій вводу / виводу (включаючи мишу, клавіатуру та сенсорний вхід). Крім того, збільшення пріоритету використовується для обходу інверсій пріоритетів, де нитка з високим пріоритетом чекає ресурс, який нині містить нитка з низьким пріоритетом. Якщо також працює нитка середнього пріоритету, вона буде голодувати ниткою пріоритетності часу процесора, затримуючи нитку з високим пріоритетом. Таким чином, потік з низьким пріоритетом тимчасово збільшується до більш високого пріоритету, тому він отримує час і, сподіваємось, звільняє ресурс, який потрібен потоку з високим пріоритетом.
Перед Windows Vista пріоритет потоку не впливав на швидкість завершення операцій вводу / виводу. Оскільки Windows Vista, I / Os також може мати пріоритет, який за замовчуванням походить від пріоритету потоку.
Підсумок: ви багато в чому не побачите жодного ефекту від зміни пріоритетів потоку, якщо ваш процесор не буде сильно завантажений, і навіть тоді ефект, як правило, буде мінімальним. Якщо процес повинен чекати вводу-виводу або він не суперечить іншим процесам протягом часу процесора, він вже працює найшвидше, що може, і зміна пріоритету не зробить його швидшим.