2011-10-07 21 views
5

मैं साझा और अनन्य लॉकिंग मोड दोनों का उपयोग करके होमपुन डेटाबेस में संसाधनों तक पहुंच नियंत्रित करने के लिए लिनक्स में झुंड (2) का उपयोग कर रहा हूं। मुझे लगता है कि यदि एक साझा लॉक दिया जाता है, तो एक और प्रक्रिया एक साझा लॉक भी प्राप्त कर सकती है, भले ही अवरुद्ध प्रक्रियाएं विशेष ताले के लिए प्रतीक्षा कर रही हों या नहीं। इसका मतलब है कि कई ओवरलैपिंग पाठकों के साथ एक लोकप्रिय संसाधन के लिए, एक विशेष लॉक अनुरोध लंबे समय तक, हमेशा के लिए भूखा हो सकता है।लिनक्स झुंड (2) को विशेष लॉक अनुरोधों से भूखा रखने के लिए कैसे रखें?

यह व्यवहार झुंड (2) मैन पेज का विरोधाभास नहीं करता है, लेकिन यह मुझे आश्चर्यचकित करता है क्योंकि यह कोड बिना किसी समस्या के फ्रीबीएसडी और ओएस-एक्स में वर्षों से काम कर रहा है। मेरा अनुमान है कि बीएसडी सिस्टम को विशेष रूप से भूखे होने से रोकने के लिए किसी प्रकार की कतार लागू करनी चाहिए।

मेरा प्राथमिक सवाल यह है कि क्या मेरे अनन्य ताले भूख से बचने के लिए कोई आसान चाल या प्रोग्रामिंग पैटर्न है?

मेरी जिज्ञासा को पूरा करने के लिए एक माध्यमिक प्रश्न, क्या किसी को पता है कि यह वास्तव में बीएसडी सिस्टम पर अलग है जैसे मुझे संदेह है?

+0

'flock' ताला कारवां की मुझे याद दिलाता है। –

उत्तर

0

मैं FreeBSD 7.2 पर बिल्कुल वैसा ही समस्या थी और झुंड पर लेखक भुखमरी() को रोकने के लिए कोई रास्ता नहीं मिला। आपको अन्य लॉकिंग विधि चुननी है, जैसे कि एसआईएसवी आईपीसी या सरल स्टॉप-फ्लैग फ़ाइल।