Ich benutze den obigen Code, um einen Zähler mit 2 Threads zu erhöhen, die unabhängig voneinander den Mut Sperren und Inkrementieren Zähler. Ich bin mit einem Deadlock konfrontiert, nachdem die Threads in diese Funktion eingetreten sind.pthread_mutex_lock verursacht 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;
}
Könnte mir bitte jemand sagen, wo genau liege ich falsch?
wahrscheinlich wollten Sie 'int * counter = counter_addr' und' ++ * counter'. –