Sto utilizzando il codice precedente per incrementare un contatore utilizzando 2 thread, che prendono in modo indipendente il blocco mut e il contatore di incremento. Sto affrontando un deadlock dopo che i thread entrano in questa funzione.pthread_mutex_lock causa deadlock
pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
void *increment_counter(void *counter_addr)
{
int max = MAX_COUNTER_VALUE;
int iter;
int counter;
for(iter=0;iter< max ;iter++)
// LOCK
pthread_mutex_lock(&mut);
counter++;
// UNLOCK
pthread_mutex_unlock(&mut);
return NULL;
}
Qualcuno potrebbe dirmi dove esattamente sto sbagliando?
probabilmente voleva 'int * contatore = counter_addr' e' ++ * counter'. –