Académique Documents
Professionnel Documents
Culture Documents
Les threads
Etienne Lozes
ENS Cachan
Etienne Lozes
Les threads
=
kill mmoire
kill
Thread (ou processus l eger) : unit e dex ecution au sein dune unit e de ressources.
fichiers signaux
Processus multithreads :
mmoire
kill
Etienne Lozes
Les threads
int fact(int n){ [...]} int i ; pthread_t thr[2] ; int arg[2] ; void *thr f(void *param) { int x = fact(*param+i) ; i++ ; return NULL ; } int main([..]) { [..] pthread_create(thr,NULL,thr f,arg) ; pthread_create(thr+1,NULL,thr f, arg+1) ; // suite=thread principal }
Etienne Lozes
Les threads
int fact(int n){ [...]} int i ; pthread_t thr[2] ; int arg[2] ; void *thr f(void *param) { int x = fact(*param+i) ; i++ ; return NULL ; } int main([..]) { [..] pthread_create(thr,NULL,thr f,arg) ; pthread_create(thr+1,NULL,thr f, arg+1) ; // suite=thread principal }
Etienne Lozes
Les threads
int fact(int n){ [...]} int i ; pthread_t thr[2] ; int arg[2] ; void *thr f(void *param) { int x = fact(*param+i) ; i++ ; return NULL ; } int main([..]) { [..] pthread_create(thr,NULL,thr f,arg) ; pthread_create(thr+1,NULL,thr f, arg+1) ; // suite=thread principal }
Etienne Lozes
Les threads
(void *) pthread create( pthread t *thread, const pthread attr t *attr, void *(*start routine)(void *), void *arg) ;
int pthread join(pthread t thread, void **value ptr) ; Attributs principaux : pile (taille et adresse), etat (joignable ou d etach e), ordonnancement.
Etienne Lozes Les threads
Structure modulaire du code re et ee ` a lex ecution. Gain conceptuel syst` eme r eactif, programmation ev enementielle, mod` ele client/serveur, thread spontan e. d emo : serveur multithread. Gain de temps appels bloquants cr eation peu co uteuse commutation rapide gestionnaire m emoire non sollicit e
Etienne Lozes
Les threads
Exercice Quels probl` emes le partage entre plusieurs threads du tas et des ressources processus pose-t-il ? La variable errno
Etienne Lozes
Les threads
Exercice Quels probl` emes le partage entre plusieurs threads du tas et des ressources processus pose-t-il ? La variable errno Les signaux :
synchrone pour le fautif, asynchrone pour une des threads en attente de signaux deux niveaux de masque.
Etienne Lozes
Les threads
Exercice Quels probl` emes le partage entre plusieurs threads du tas et des ressources processus pose-t-il ? La variable errno Les signaux :
synchrone pour le fautif, asynchrone pour une des threads en attente de signaux deux niveaux de masque.
Les forks : 1 seule thread dupliqu ee, sauf en Solaris o` u elles sont toutes dupliqu ees.
Etienne Lozes
Les threads
ordonnanceur systme
Etienne Lozes
Les threads
Avantages des threads utilisateur pas dappels syst` eme pour leur gestion commutation rapide on peut xer lordonnancement (ex : bien avec un gc) Inconv enients des threads utilisateur les appels syst` emes bloquants bloquent tout le monde utiliser des appels non bloquants. Probl` eme du d efaut de page. En pratique : threads noyau ou hybrides.
Etienne Lozes
Les threads
Le m ecanisme dupcall Le noyau pr evient lordonnanceur utilisateur quun thread est susceptible de changer d etat.
Etienne Lozes Les threads