1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| Exemple de thread
// Création de deux threads pointant sur les fonctions fct_thread1 et fct_thread2. Passage d'une chaine en parametre de t2. Réunion par 2 pthread_join.
//1ère fonction exécutée par t1
void* fct_thread1(void * arg){
for (int i=0; i<10; i++) fprintf(stderr,"t1 %d\n",i); pthread_exit(NULL);
return NULL;
}
//2ème fonction exécutée par t2, reçoit une chaîne en paramètre
void* fct_thread2(void * chaine) {
char * chaine_recue=chaine;
for(int i=0; i<20; i++) {
write(1,"\tt2\n",4); printf("%s\n", chaine_recue); }
return NULL; }

int main(void) {
//declaration de 2 descripteurs de thread pthread_t t1, t2;
char texte[10]="toto";
printf("Depart de threads\n");
//lancement des 2 threads. t2 est lance avec passage de « to to » en parametre
pthread_create(&t1, NULL, fct_thread1, NULL); pthread_create(&t2, NULL, fct_thread2,(void*)texte);
//on attend les 2 threads ici
pthread_join(t1,NULL);
pthread_join(t2,NULL);
//à partir de la ligne précédente, on se retrouve dans le proc. initial |
Partager