I have this code:
#include<stdio.h> #include<string.h> #include<pthread.h> #include<stdlib.h> #include<unistd.h> int cont = 0; pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER; void* codiceThreadIncremento(void *arg) { //sezione critica pthread_mutex_lock(&mut); printf("hello"); cont++; pthread_mutex_unlock(&mut); return NULL; } int main(void){ pthread_t thread1; pthread_t thread2; pthread_create(&thread1, NULL, &codiceThreadIncremento,NULL); printf("valore cont1 %d \n",cont); pthread_create(&thread2, NULL, &codiceThreadIncremento, NULL); printf("valore cont2 %d \n",cont); pthread_join(thread1,NULL); pthread_join(thread2,NULL); pthread_mutex_destroy(&mut); return 0; } I want try a simple increment of variable "cont" with the use of mutex.
When i execute this code I obtain this:
valore cont1 0 valore cont2 0 But I expect
valore cont1= 1 valore con2 = 2
printf("hello\n");and moveprintf("valore cont2 %d \n",cont);after you join threads.