next up previous contents
Next: File sécurisée : Nicolas Up: Gestion des Threads et Previous: Gestion des Threads et   Contents

Quelques détails sur les threads

Depuis la troisième soutenance, nous utilisons plusieurs threads. Des améliorations ont été apportées car nous en faisions un usage abusif : un thread pour le sniffer, un pour l'affichage, un pour le scanner, un pour le trace-route, un pour le fond Matrix. Mais trop de threads tuent le thread. Nous avons donc réduit le nombre de threads à trois et nous y avons ajouté une synchronisation pour le thread de l'affichage. Ce changement a largement augmenté les performances du Fire-wall afin de diminuer les 'plantages' et surtout l'utilisation du processeur. Nous avons créé deux classes héritant des propriétés de threads : une pour le sniffer, et une pour l'affichage des paquets. Lors de leur création, ces threads reçoivent certains pointeurs sur les données qu'ils pourront modifier de façon à ce que ce soit les mêmes données à l'intérieur et à l'extérieur de la classe.
Le thread du sniffer récupère de l'extérieur la classe de la configuration, et la files des paquets à afficher.
 
Lors de son exécution, à chaque tour de boucle : Le thread de l'affichage a pour but d'afficher les erreurs ou les réponses dans les différents éléments tels que le TreeView ou les ListBox du scanner et du trace-route. Pour cela, tant que la file n'est pas vide, il en extrait le premier élément. Il peut l'afficher dans l'élément approprié car le type du paquet (type énuméré : Err, Trace, Scan) est enfilé avec. Lorsque la file est vide, le thread s'auto-suspend. Dans ces cas, dès qu'un paquet est enfilé, le thread du sniffer relancera le thread de l'affichage.
next up previous contents
Next: File sécurisée : Nicolas Up: Gestion des Threads et Previous: Gestion des Threads et   Contents
root 2002-06-23