मैं उपरोक्त कोड का उपयोग 2 धागे का उपयोग करके काउंटर बढ़ाने के लिए कर रहा हूं, जो स्वतंत्र रूप से म्यूट लॉक और वृद्धि काउंटर लेता है। थ्रेड इस फ़ंक्शन में प्रवेश करने के बाद मुझे डेडलॉक का सामना करना पड़ रहा है।pthread_mutex_lock डेडलॉक का कारण बनता है
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;
}
क्या कोई मुझे बता सकता है कि मैं वास्तव में गलत कहां जा रहा हूं?
शायद आप 'पूर्णांक * काउंटर = counter_addr' और' ++ * counter' चाहता था: इस उद्देश्य के लिए, आप एक कोड इस के समान है जो
pthread_mutex_lock
की वापसी कोड की जांच करता है का उपयोग कर सकते हैं। –