Prioritási kiemelések

Minden szálhoz dinamikus prioritásútartozik. Az ütemező ezt a prioritást használja annak meghatározásához, hogy melyik szálat kell végrehajtani. A szál dinamikus prioritása kezdetben megegyezik az alap prioritásával. A rendszer képes növelni és csökkenteni a dinamikus prioritást, hogy rugalmas legyen, és hogy egyetlen szál sem éhezik a processzoridő miatt. A rendszer nem növeli a 16 és 31 közötti alap prioritási szinttel rendelkező szálak prioritását. Csak a 0 és 15 közötti alap prioritású szálak kapnak dinamikus prioritást.

A rendszer az alábbiak szerint növeli a szál dinamikus prioritását a válaszképesség növelése érdekében.

  • Amikor egy NORMAL_PRIORITY_CLASS használó folyamat kerül előtérbe, az ütemező növeli az előtérablakhoz társított folyamat prioritási osztályát, hogy az nagyobb vagy egyenlő legyen bármely háttérfolyamat prioritási osztályával. A prioritási osztály akkor tér vissza az eredeti beállításához, ha a folyamat már nincs az előtérben.

  • Amikor egy ablak bemenetet kap, például időzítőüzeneteket, egérüzeneteket vagy billentyűzetbemenetet, az ütemező növeli az ablakhoz tartozó szál prioritását.

  • Ha a blokkolt szál várakozási feltételei teljesülnek, az ütemező növeli a szál prioritását. Ha például a lemezhez vagy a billentyűzet I/O-hoz társított várakozási művelet befejeződik, a szál prioritást kap.

    A prioritás-növelő funkció letiltásához hívja meg a SetProcessPriorityBoost vagy SetThreadPriorityBoost függvényt. Annak megállapításához, hogy a funkció le van-e tiltva, hívja meg a GetProcessPriorityBoost vagy GetThreadPriorityBoost függvényt.

A szál dinamikus prioritásának növelése után az ütemező minden alkalommal egy szinttel csökkenti ezt a prioritást, amikor a szál befejez egy időszeletet, amíg a szál vissza nem kerül az alap prioritására. A szál dinamikus prioritása soha nem kisebb, mint az alap prioritása.