Classe de priorité
La classe de priorité sur un processus permet de déterminer la classe qui sera utilisée par les threads de ce processus. Il sera ensuite possible de positionner le niveau de priorité dans la classe sur chaques threads
Il y a 6 classes de prioritées:
IDLE_PRIORITY_CLASS C'est la priorité la plus basse, le thread ne tourne
que s'il n'y a plus rien d'autre à faire par le cpu. Cela peut-être
intéressant pour des traitements en tâche de fond.
BELOW_NORMAL_PRIORITY_CLASS Priorité supérieure à IDLE_PRIORITY_CLASS mais inférieure à NORMAL_PRIORITY_CLASS. (N'existe pas pour NT, Windows 95, 98 et ME).
NORMAL_PRIORITY_CLASS Priorité normal d'un thread, n'a pas d'urgence particulière. C'est donc cette priorité qu'il faut généralement utiliser.
ABOVE_NORMAL_PRIORITY_CLASS Priorité supérieure à NORMAL_PRIORITY_CLASS mais inférieure à HIGH_PRIORITY_CLASS. (N'existe pas pour NT, Windows 95, 98 et ME).
HIGH_PRIORITY_CLASS A utiliser avec précaution. Ce thread
sera prioritaire pour recevoir le contrôle du microprocesseur. A utiliser
sur des traitements plutôt courts ou une application en premier plan.
REALTIME_PRIORITY_CLASS Priorité maximum, il faut alors que le traitement
soit le plus rapide possible si vous ne voulez pas avoir une machine qui saccade.
Les quotas de temps alloués à ce thread
sont infinis. Ce qui veut dire qu'il utilise à 100% le temps du microprocesseur
et ne le partage plus. Tous les autres threads
sont eux en attentes. C'est au thread en cours d'exécution de rendre
la main. Généralement, vous n'utiliserez pas ce genre de priorité.
Sauf peut-être pour gérer certains périphériques
dans le cas de développement de driver. Ou encore pour créer un
programme permettant le ralentissement de la machine (par exemple pour ralentir
un jeu).
Pour changer la classe de priorité d'un thread, vous utiliserez la fonction
BOOL SetPriorityClass(
HANDLE hProcess,
DWORD dwPriorityClass
);
Pour relire la classe de priorité:
DWORD GetPriorityClass(
HANDLE hProcess
);
Ces deux fonctions retournant 0 si erreur.