Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
1.Objectif
Il s'agit de d’effectuer des premiers pas avec la programmation Multithread en C, en utilisant la bibliothèque
pthread et d’étudier des schémas « classiques » de synchronisation.
2.Compilation
L’édition de lien doit se faire avec l'option « -pthread », c’est-à-dire pour compiler le
programme « test.c » il faut taper : gcc -o test -pthread test.c
Créer un thread
Pour créer un thread,on commence par déclarer une variable le représentant. Celle-ci
sera de type pthread_t (unsigned long int).
int pthread_create (
void *(*start_routine) (void *), // pointeur vers la fonction à exécuter dans le thread
);
La fonction renvoie une valeur de type int : 0 si la création a été réussie ou une autre
valeur si il y a eu une erreur.
1
pthread_create( thread, attribut, routine, argument ): Créer d'un thread. Le nouveau
Autres fonctions
4.Travail demandé
Exercice 1:
#include <stdlib.h>
#include <stdio.h>
#include <pthread.h>
int main()
int i;
printf("1");
printf("\n");
pthread_join(thread, NULL);
return 0;
}
2
void* maFonction(void* data)
int i;
printf("2");
printf("\n");
return NULL;
Exercice 2:
#include <pthread.h>
#include <stdio.h>
int i;
for(i=0;i<10;i++){
sleep(1);
return NULL;
3
int main(void)
pthread_t t1;
pthread_join(t1,NULL);
Exercice 3:
Écrire un programme qui permet de créer un thread qui lit des caractères au clavier et
les passe à un autre thread qui se charge de les afficher. Il faut noter que le thread
principal (le père) se charge de la création de ses fils et de l'attente de leur mort. Cette
disparition est programmée à l'arrivée du caractère "F".
4
Exercice 4:
#include <stdlib.h>
#include <stdio.h>
if (n<2) return n ;
else {
int x, y ;
x = fib (n-1) ;
y = fib (n-2) ;
return x + y ;
int n, res ;
n = atoi (argv[1]) ;
exit (0) ;
5
1. On veut accélérer l'exécution de ce code à l'aide des threads. L'idée est d'attacher
un thread à chacune des instances de la fonction fib(). On construit ainsi un arbre
de threads. Avant de retourner son résultat, un thread attend que ses deux fils
aient terminé.
#define INCONNUE -1