#include <stdio.h> #include <pthread.h> int x = 0; /* variable partagée */ pthread_mutex_t mx; /* AJOUT : verrou pour protéger x */ void* f(void* args){ char* nom = (char*) args; printf("Debut de fonction %s\n", nom); for (int i = 0; i < 100000; i += 1) { pthread_mutex_lock(&mx); // AJOUT x += 1; pthread_mutex_unlock(&mx); // AJOUT } printf("Fin de fonction %s\n", nom); return NULL; } int main() { pthread_mutex_init(&mx, NULL); // AJOUT pthread_t t1; pthread_t t2; printf("Le thread principal lance deux nouveaux threads\n"); pthread_create(&t1, NULL, f, "A"); pthread_create(&t2, NULL, f, "B"); printf("Le thread principal attend la fin du thread A\n"); pthread_join(t1, NULL); printf("Le thread principal attend la fin du thread B\n"); pthread_join(t2, NULL); printf("x=%d\n", x); return 0; }