Bonsoir à tous,
voilà j'ai un problème avec les threads, en essayant de programmer un petit programme qui affiche le numéro d'ordre d'un thread j'ai un problème avec la section critique.
voilà mon programme
Sachant que j'utilise Xubuntu et quand je lui envoi en paramètre 10 avec la console ça m'affiche le résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
33 #include <unistd.h> #include <sys/types.h> #include <errno.h> #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <string.h> #include <semaphore.h> void* fonction(void *arg); sem_t mutex; int main(int argc, char *argv[]){ pthread_t *th; int i; int nbr =atoi(argv[1]); th = malloc(nbr*sizeof(pthread_t)); sem_init(&mutex,0,1); for(i=0;i<nbr;i++) pthread_create(&th[i], NULL, fonction, &i); for(i=0;i<nbr;i++) pthread_join(th[i], NULL); return EXIT_SUCCESS; } void* fonction(void *arg){ sem_wait(&mutex); printf("Bonjour le monde %d\n",*((int*) arg)); sem_post(&mutex); return NULL; }
Bonjour le monde : 8
Bonjour le monde : 8
Bonjour le monde : 8
Bonjour le monde : 8
Bonjour le monde : 4
Bonjour le monde : 4
Bonjour le monde : 4
Bonjour le monde : 4
Bonjour le monde : 4
Bonjour le monde : 9
Merci à vous de me donner le chemin à suivre pour que je puisse y arriver
Partager