Udostępnij przez


Podwyższenie priorytetu

Każdy wątek ma priorytet dynamiczny. Jest to priorytet używany przez harmonogram do określenia, który wątek ma zostać wykonany. Początkowo priorytet dynamiczny wątku jest taki sam jak priorytet podstawowy. System może zwiększyć i obniżyć priorytet dynamiczny, aby upewnić się, że odpowiada i że żadne wątki nie są głodne w czasie procesora. System nie zwiększa priorytetu wątków z poziomem priorytetu podstawowego z zakresu od 16 do 31. Tylko wątki z priorytetem podstawowym z zakresu od 0 do 15 otrzymują dynamiczne impulsy priorytetu.

System zwiększa dynamiczny priorytet wątku, aby zwiększyć szybkość reakcji w następujący sposób.

  • Gdy proces używający NORMAL_PRIORITY_CLASS jest wprowadzany na pierwszym planie, harmonogram zwiększa klasę priorytetu procesu skojarzonego z oknem pierwszego planu, dzięki czemu jest większa lub równa klasie priorytetu wszystkich procesów w tle. Klasa priorytetu powraca do oryginalnego ustawienia, gdy proces nie znajduje się już na pierwszym planie.

  • Gdy okno odbiera dane wejściowe, takie jak komunikaty czasomierza, komunikaty myszy lub wprowadzanie za pomocą klawiatury, harmonogram zwiększa priorytet wątku będącego właścicielem okna.

  • Gdy warunki oczekiwania dla zablokowanego wątku są spełnione, harmonogram zwiększa priorytet wątku. Na przykład po zakończeniu operacji oczekiwania skojarzonej z operacją we/wy dysku lub klawiatury wątek otrzymuje priorytet.

    Funkcję zwiększania priorytetów można wyłączyć, wywołując funkcję SetProcessPriorityBoost lub SetThreadPriorityBoost. Aby określić, czy ta funkcja została wyłączona, wywołaj funkcję GetProcessPriorityBoost lub GetThreadPriorityBoost.

Po podniesieniu priorytetu dynamicznego wątku harmonogram zmniejsza ten priorytet o jeden poziom za każdym razem, gdy wątek zakończy fragment czasu, aż wątek powróci do priorytetu podstawowego. Priorytet dynamiczny wątku nigdy nie jest mniejszy niż priorytet podstawowy.