PDA

View Full Version : [C]Pthread e Mutex sempre in deadlock


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;
}

marco.r
16-10-2011, 15:42
Il programma funziona correttamente. Che cosa fa e cosa ti aspetti come risultato invece ?
Se hai il dubbio che sia in deadlock (cosa che non e') puoi utilizzare il debugger per verificare.

jonnykaraoke
16-10-2011, 18:23
è normale che si impalli il compilatore??? ho riavviato il pc e adesso funziona...

marco.r
17-10-2011, 00:14
direi proprio di no, il problema penso sia altrove.

WarDuck
17-10-2011, 13:05
è normale che si impalli il compilatore??? ho riavviato il pc e adesso funziona...

Cosa intendi esattamente per compilatore impallato?

a) che compilatore usi?
b) usi qualche IDE in particolare?
c) che distribuzione usi?
d) che linea di comando passi al compilatore?