Obtenir le pack complet des cours, TDs, examens sur Systèmes d’Exploitation!
Vous souhaitez maîtriser Systèmes d’Exploitation ? Ne cherchez plus, nous avons le pack bien choisi pour vous.
Accédez à une collection complète des supports de cours, des travaux dirigés (TDs) corrigés, TPs avec solution, examens...
Télécharger packUniversit" de Bouira- D ́epartement d’InformatiqueAnn ́ee 2017-2018
Syst`emes d’exploitation des Ordinateurs 23`eme ann ́ee
TP 2: cr ́eation de Threads sous linux
Exercice 1
Probl`eme des acc`es concurrents ́
Ecrire un programme qui initialise une variable enti`erevalueglobale`a 1 et cr ́ee deux threadthaet
thb. Le threadthaincr ́ementevalueglobale100000 fois et le threadthbd ́ecr ́ementevalueglobale
100000 fois.
1.Quelle devrait ˆetre la valeur finale devalueglobale?
2.Que remarquez-vous apr`es plusieurs ex ́ecutions du programme ?
3.Expliquez
Rappels des fonctions de manipulation des threads
1. #include<pthread.h>
2. intpthread
create(pthreadt *thread, const pthreadattrt *attr, void *(*routine)(void*),
void *arg);
La fonctionpthread
createcr ́ee un thread, et renvoie 0 si la cr ́eation s’est bien d ́eroul ́ee, ou le
code de l’erreur sinon Elle re ̧coit en argument :
•le TID (Thread Identifier) du thread,
•une constante
•un pointeur vers la fonction ex ́ecut ́ee par le thread
•un argument de la fonction
3. intpthread
exit(void *valueptr) ;
La fonctionpthreadexitpermet de quitter un thread.
4. intpthread
join(pthreadt *thread, void **valueptr) ;
La fonctionpthreadjoinbloque l’appelant en attente de la fin du thread pass ́e en 1er argument,
alors que le 2nd argument est un pointeur de pointeur qui servira `a r ́ecup ́erer l’adresse de la
valeur renvoy ́ee par le thread
exit du thread, cette fonction renvoie 0 si le thread se termine
correctement, sinon elle renvoie le code de l’erreur
Par: Dr. A. ABBASpage 1
