एक अनुभवहीन सवाल से Pthread Mutex ताला अनलॉक ..अलग धागे
मैं कह रहा से पहले पढ़ - "। एक म्युटेक्स धागा है कि यह बंद से केवल अनलॉक किया जा करने के लिए किया"
लेकिन मैं लिखा है एक कार्यक्रम जहां THREAD1 ताले mutexVar और नींद के लिए चला जाता है। फिर THREAD2 सीधे mutexVar अनलॉक कर सकते हैं कुछ संचालन और वापसी करते हैं।
==> मुझे पता है कि हर कोई कहता है कि मैं ऐसा क्यों कर रहा हूं ?? लेकिन मेरा सवाल है - क्या यह म्यूटेक्स का सही व्यवहार है ??
==> नमूना कोड
void *functionC()
{
pthread_mutex_lock(&mutex1);
counter++;
sleep(10);
printf("Thread01: Counter value: %d\n",counter);
pthread_mutex_unlock(&mutex1);
}
void *functionD()
{
pthread_mutex_unlock(&mutex1);
pthread_mutex_lock(&mutex1);
counter=10;
printf("Counter value: %d\n",counter);
}
int main()
{
int rc1, rc2;
pthread_t thread1, thread2;
if(pthread_mutex_init(&mutex1, NULL))
printf("Error while using pthread_mutex_init\n");
if((rc1=pthread_create(&thread1, NULL, &functionC, NULL)))
{
printf("Thread creation failed: %d\n", rc1);
}
if((rc2=pthread_create(&thread2, NULL, &functionD, NULL)))
{
printf("Thread creation failed: %d\n", rc2);
}
@ सैंटियागो - नमूना कोड जोड़ा गया .. – codingfreak
नहीं - लेकिन 1 के मान वाला एक सेमफ़ोअर एक म्यूटेक्स की तरह हो सकता है, और इसे एक अलग थ्रेड से अनलॉक किया जा सकता है। हालांकि, 1 से ऊपर जाने वाले मूल्य को रोकने के लिए आपको म्यूटेक्स के साथ सेमफोर पर परिचालनों की रक्षा करने की आवश्यकता हो सकती है। – aaa90210