TP2.2 : Gestion des Threads

Computer Science - Multithreading in C Programming · notes

Voir tous les documents en gestion et économie

TP2.2 : Gestion des Threads

Exercice1:

Écrire un programme qui crée un thread et qui affiche sur la console « Hello !! Je suis le

thread!! »

1. Copier le code suivant sur un fichier, sous le nom Hello_thread.c :

#include <stdio.h>

#include <pthread.h> / contient toutes les fonctions relatives aux threads/

void affichage(void arg)

{

printf("Hello!! Je suis le Thread\n");

return NULL;

}

Publicité

int main()

{

pthread_t tid;

printf("Debut prg principal...\n");

pthread_create(&tid,NULL,affichage,NULL); // pthread_create crée un nouveau

thread

printf("fin prg principal....\n");

return 0;

}

2. Compiler le fichier soit en utilisant :

 make Hello_thread

 gcc -o Hello_thread Hello_thread.c

Publicité

Erreur ! Pourquoi ?

Il faut linker la lib pthread.

Utilisez donc cette commande pour compiler :

gcc -o Hello_thread Hello_thread.c -lpthread

3. Exécuter le programme :

Pas d'affichage. Pourquoi ?

4. Ajouter sleep(5) après l'appel de pthread_create().

Est-ce que le thread est proprement terminé ?

5. Remplacer donc sleep() par wait(0).

6. Utiliser maintenant pthread_join, compiler puis exécutez le pgm.

A.Channouf

TP2.2 : Gestion des Threads

Publicité

Note : l'équivalent de wait() et waitpid(), pour les threads, c'est pthread_join().

pthread_join : force le programme principal à attendre la terminaison du thread.

7. Appeler pthread_exit au niveau du thread et ajouter un autre affichage après l'appel de exit.

Note : pthread_exit : termine le thread en fournissant un code de retour, à la différence de

exit() qui termine le processus et tous ses threads.

Exercice2:

Écrire un programme qui crée deux threads l'un affiche des nombres de 1 à 10 et l'autre

affiche des nombres de 11 à 20.

Répéter plusieurs fois l'exécution de ce pgm.

Qu'est que vous remarquez ?

Exercice3:

Écrire un programme qui crée un thread qui calcule le factorielle d'un nombre donné par le

Publicité

pgm principal.

Note : Les threads peuvent partager des données entre eux ( ≠ les processus le fils et le père

fonctionnent indépendamment).

Mais cela pose des problèmes !

En effet, quand deux threads cherchent à modifier deux variables en même temps.

Que se passe-t-il ?

Et si un thread lit une variable quand un autre thread la modifie ?

C'est assez problématique. Par conséquent, nous allons voir un mécanisme de synchronisation:

les mutex, un des outils permettant l'exclusion mutuelle.

 But du prochain chapitre : IPC( Inter-Process Communication)

A.Channouf