मैं बढ़ते क्रम में कुछ संसाधन प्राप्त कर रहा हूं। कौन सा संस्करण बेहतर है? मुझे बताया गया था कि # 2 उच्च संख्या वाले संसाधनों की मांग वाले थ्रेडों के भुखमरी की ओर जाता है। क्या ये सच है? यदि ऐसा है, तो कैसे और क्यों?संसाधन अधिग्रहण और pthreads
a[] sorted array
1.
for(int i = 1; i < N; ++i) {
lock(mutex)
while(!resource_available[a[i]]) {
pthread_cond_wait(&cond_w[a[i]], &mutex);
}
resource_available[a[i]] = 0;
unlock(mutex)
}
2.
lock(mutex)
for(int i = 1; i < N; ++i) {
while(!resource_available[a[i]]) {
pthread_cond_wait(&cond_w[a[i]], &mutex);
}
resource_available[a[i]] = 0;
}
unlock(mutex)
संपादित करें: ऐसा लगता है कि जिस क्रम में आप संसाधनों जारी अंतर है, नहीं ऊपर निर्माणों बनाता है। यदि आप उन्हें छोड़ देते हैं तो आपको उन्हें भुखमरी मिलती है, अगर विपरीत में तो शायद नहीं।
वहां कहीं भी 'अधिग्रहण' (एक [i]) कॉल नहीं होना चाहिए? – caf
मैंने अधिग्रहण जोड़ा। – niteria
http://stackoverflow.com/questions/1162587/what-is-starvation भुखमरी की परिभाषा – niteria