У меня есть этот код:
#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;
}
Я хочу попробовать простой инкремент переменной "cont
" с использованием мьютекса.
Когда я выполняю этот код, я получаю это:
valore cont1 0
valore cont2 0
Но я ожидаю
valore cont1= 1
valore con2 = 2