Sdílet prostřednictvím


Zvýšení priority

Každé vlákno má dynamickou prioritu. Toto je priorita, kterou plánovač používá k určení, které vlákno se má provést. Na začátku je dynamická priorita vlákna stejná jako její základní priorita. Systém může zvýšit a snížit dynamickou prioritu, aby se zajistilo, že reaguje a že po dobu procesoru nejsou žádná vlákna hladověná. Systém nezlepšuje prioritu vláken se základní úrovní priority mezi 16 a 31. Dynamické zvýšení priority přijímají pouze vlákna se základní prioritou mezi 0 a 15.

Systém zvyšuje dynamickou prioritu vlákna, aby zlepšil rychlost odezvy následujícím způsobem.

  • Když se proces, který používá NORMAL_PRIORITY_CLASS, přenese do popředí, plánovač zvýší třídu priority procesu přidruženého k oknem popředí, aby byl větší nebo roven třídě priority všech procesů na pozadí. Třída priority se vrátí do původního nastavení, pokud proces již není v popředí.

  • Když okno obdrží vstup, například zprávy časovače, zprávy myši nebo vstup klávesnice, plánovač zvýší prioritu vlákna, které je vlastníkem okna.

  • Pokud jsou splněny podmínky čekání na blokované vlákno, plánovač zvýší prioritu vlákna. Když se například dokončí operace čekání související s vstupně-výstupními operacemi disku nebo klávesnice, vlákno obdrží zvýšení priority.

    Funkci zvýšení priority můžete zakázat voláním funkce SetProcessPriorityBoost nebo SetThreadPriorityBoost funkce. Chcete-li zjistit, zda byla tato funkce zakázána, zavolejte GetProcessPriorityBoost nebo GetThreadPriorityBoost funkce.

Po zvýšení dynamické priority vlákna plánovač tuto prioritu sníží o jednu úroveň pokaždé, když vlákno dokončí časový řez, dokud vlákno nepřesadí zpět na základní prioritu. Dynamická priorita vlákna není nikdy menší než její základní priorita.