Test de priorité de thread

© 1998, Olivier Cado

Ce logiciel montre l'effet du changement de priorité d'un thread (1) sous Windows.

Il met en oeuvre trois threads : le thread principal supporte l'interface graphique, un deuxième thread déplace un bouton en permanence dans la fenêtre, et un troisième peut être déclenché et faire un calcul en boucle sur des nombres réels.

L'utilisateur peut choisir la priorité (2) de ce dernier thread, et ainsi constater le rythme d'exécution des autres threads. S'il choisit la priorité la plus forte possible, le thread de calcul acapare toutes la puissance du processeur, par conséquent toutes les autres applications se bloquent, y compris l'interface graphique de Windows !

 

1. Quelques définitions

(1) Un thread, ou processus léger, est un flux d'exécution à l'intérieur d'un processus. Pour simplifier, une application peut contenir plusieurs sous-programmes qui fonctionnent en parallèle, les threads.

(2) La priorité d'un thread permet de choisir si le processeur doit passer beaucoup de temps dans ce thread, ou à l'inverse n'y passer que s'il n'y a pas d'autres tâches plus importantes en cours d'exécution (prioritaires). La priorité est une notion particulièrement importante pour les logiciels qui traitent des données en temps réel.

 

2. Exemples de logiciels dans lesquels on peut fixer la priorité des threads :

- Winamp (lecteur de musique / décodeur Mp3) : pour que la musique soit diffusée de manière fluide tandis que d'autres programmes s'exécutent, on fixe une priorité haute.
- Client distributed.net : pour que le programme effectue ses calculs sans pénaliser les performances des autres applications, on fixe une priorité basse et même "idle".

La priorité "idle" permet de récupérer le "temps machine" inutilisé, c'est-à-dire les instants (même très courts) où le processeur n'a rien à faire. Ainsi, pendant que je tape ce texte, l'éditeur HTML ne "travaille" que lorsque je tape une touche. Puisque je ne tape pas très très vite (eh non je ne suis pas Superman), il y a au moins quelques dixièmes de seconde entre chaque frappe, que le processeur peut récupérer pour effectuer les calculs du client distributed.net. Pour voir quelle est la proportion du temps pendant lequel le processeur est inactif, il suffit d'utiliser le logiciel WinTop, qui fait partie des KernelToys de Windows 95 et 98, ou le Gestionnaire de tâches de Windows NT. Il existe aussi des programmes qui activent le mode "veille" du processeur pendant le temps d'inactivité, ce qui a pour effet d'économiser de l'énergie (et de refroidir le processeur).

 

3. Télécharger "Test de priorité de thread"

Télécharger SpdTest.zip

122 Ko - fourni avec le code source

Le programme est diffusé sous license publique générale GNU. Cela signifie que non seulement qu'il est diffusable et copiable à volonté, mais qu'en plus je fournis le code source ici-même !

L'intérêt pour les apprenti-programmeurs est de constater que la programmation multi-thread peut être simple ! Du moins en utilisant l'environnement de développement Borland Delphi, grâce à la classe TThread.

Ce logiciel a été aussi diffusé sur le CD Pro du magazine PC-Team n°45.


© 1999, Olivier Cado
Mise à jour le 14/04/99
Précédent