next up previous contents
suivant: Tester si Perl est monter: La programmation multi-threadée précédent: La programmation multi-threadée   Table des matières

Les gains de la programmation multi-threadée

Dans un programme normal, votre code est découpé en fonctions que vous appellez selons vos besoins. Lorsque vous appellez une fonction, celle-ci peut tout à fait en appeller d'autres ou elle-même, mais en toute condition, votre programme doit attendre qu'une fonction ai terminé son travail pour pouvoir en entamer un autre.

Votre programme travaille en série et ne fait jamais plus d'une chose à la fois.

Parce qu'un serveur doit souvent répondre à des requêtes simultanées et faire plusieurs choses en même temps. Il est possible de dire à un programme de créer un autre processus et de lui confier une tache. Ceci se fait avec l'appel fork(). Suite à l'appel de cette fonction, le processus va se dupliquer en mémoire et créer un fils. Il va confier à ce fils un travail particulier (traiter une requête d'un client par exemple) et pouvoir lui même continuer son propre travail. C'est ainsi que marche un serveur SMTP, par exemple, ou le processus principal qui écoute sur le port 25 va créer un fils pour chaque mail reçu et laisser ce fils gérer la transaction pendant qu'il continue à écouter sur le port 25.

En opposition à ce type de programmation, on peut utiliser les threads pour permettre à un processus unique de faire plusieurs choses en même temps.

De façon générale, la programmation multi-threadée est plus performante que l'utilisation de l'appel fork()10.1Le multi-threading nétant pas encore finalisé dans Perl, cette règle ne s'applique malheureusement pas au moment d'écrire ses lignes. Tous les threads partagent le même espace mémoire et la création d'un thread n'est pas un mécanisme aussi couteux en CPU que la création d'un nouveau process.

En contre partie la programmation multi-threadée est souvent moins fiable. En effet, tous les threads partageant le même espace mémoire, le plantage d'un d'entre eux peut tout à fait s'avérer fatidique pour les autres.

Sous Linux, les threads sont vus comme des process et ont tous un PID particulier. Sous Solaris ou Windows, quelques soient le nombre de threads utilisés par un programme, il n'y a qu'un seul PID visible de l'utilisateur.


next up previous contents
suivant: Tester si Perl est monter: La programmation multi-threadée précédent: La programmation multi-threadée   Table des matières
2006-03-15