Bonjour à tous.
J'ai écrit un petit programme en C++ pour tester pthread_mutex mais ça ne marche pas je ne comprend pas.

J'ai lu qu'un mutex est un objet d'exclusion qui sert à protéger des données partagées de modifications concurrentes et à implémenter des sections critiques.

je me suis donc dit que le programme suivant :


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
#include <pthread.h>
#include <iostream>
#include <time.h>
using namespace std;
 
pthread_mutex_t acces=PTHREAD_MUTEX_INITIALIZER;
 
void affiche(int nbr){
  pthread_mutex_lock(&acces);
  for(;;) cout<<"coucou "<<nbr<<endl;
  pthread_mutex_unlock(&acces);
}
 
int main() {
 
  pthread_t th1;
  pthread_t th2;
 
  pthread_create(&th1,0,(void * (*)(void*))affiche,(void *)1);
  pthread_create(&th2,0,(void * (*)(void*))affiche,(void *)2);
 
  pthread_join(th2,0);
  pthread_join(th1,0);
 
}
devrait m'afficher coucou1 à l'infini or ce n'est pas le cas il y a aussi des coucou2 qui apparaissent.

petetre que j'ai mal compris l'utilisation des mutex je ne sais pas.

ps : je suis sur linux

Merci beaucoup pour votre aide.