jonnykaraoke
16-10-2011, 11:34
salve a tutti, ho fatto un programma con thread POSIX ma non so perchè anche usando il MUTEX credo mi vadi in deadlock, qualcuno ha riscontrato un errore?
#include<iostream>
#include<pthread.h>
using namespace std;
int valore1=100;
pthread_mutex_t blocco;
void*funzione(void*arg)
{
pthread_mutex_lock(&blocco);
valore1=valore1-50;
cout<<valore1;
pthread_mutex_unlock(&blocco);
}
void*funzione2(void*arg)
{
pthread_mutex_lock(&blocco);
valore1=valore1-50;
cout<<valore1;
pthread_mutex_unlock(&blocco);
}
int main(void)
{
pthread_t t1;
pthread_t t2;
pthread_mutex_init(&blocco,NULL);
pthread_create(&t1,NULL,&funzione,NULL);
pthread_create(&t2,NULL,&funzione2,NULL);
pthread_join(t1,NULL);
pthread_join(t2,NULL);
return 0;
}
#include<iostream>
#include<pthread.h>
using namespace std;
int valore1=100;
pthread_mutex_t blocco;
void*funzione(void*arg)
{
pthread_mutex_lock(&blocco);
valore1=valore1-50;
cout<<valore1;
pthread_mutex_unlock(&blocco);
}
void*funzione2(void*arg)
{
pthread_mutex_lock(&blocco);
valore1=valore1-50;
cout<<valore1;
pthread_mutex_unlock(&blocco);
}
int main(void)
{
pthread_t t1;
pthread_t t2;
pthread_mutex_init(&blocco,NULL);
pthread_create(&t1,NULL,&funzione,NULL);
pthread_create(&t2,NULL,&funzione2,NULL);
pthread_join(t1,NULL);
pthread_join(t2,NULL);
return 0;
}