यहां एक लिंक http://semanchuk.com/philip/ है जो पॉज़िक्स और सिस्टम वी सेमफोरस को लागू करने वाले पुस्तकालयों के साथ है। आप उनमें से एक का उपयोग कर सकते हैं। सावधान रहें हालांकि ऐसी परिस्थिति में जब सेमफोर पकड़े जाने की प्रक्रिया इसे जारी किए बिना मर जाती है - अन्य सभी अटक जाते हैं। यदि आप इससे डरते हैं - आप यूएनडीओ के साथ सिस्टम वी सेमफोरस का उपयोग कर सकते हैं लेकिन वे थोड़ा धीमे हैं। इसके अलावा यदि आप सिस्टम वी साझा स्मृति प्राइमेटिव्स का उपयोग करने के लिए होते हैं - याद रखें कि वे कर्नेल में रहते हैं और प्रक्रिया समाप्त होने के बाद जीते रहते हैं - आपको उन्हें सिस्टम से स्पष्ट रूप से निकालना होगा।
आप प्रक्रियाओं और पूरी प्रणाली और प्रक्रियाओं के गतिरोध मरने से डर से संबंधित हैं नहीं कर रहे हैं - (। वे POSIX नामित संकेतबाहु कर रहे हैं) आप अजगर के Semaphores इस्तेमाल कर सकते हैं
पेज आप संबंधित सवाल (fcntl) के रूप में जुड़ा हुआ करता यह नहीं कह रहा कि fcntl इंटर थ्रेड लॉकिंग के लिए उपयुक्त नहीं है। यह कह रहा है कि fcntl fds के बारे में परवाह करता है। इसलिए जब तक आप लॉकिंग फ़ाइल खोलते हैं और प्रत्येक लॉक इंस्टेंस के लिए नया एफडी प्राप्त करते हैं, तब तक आप इंटर-प्रोसेस और इंटर-थ्रेड लॉकिंग के लिए fcntl का उपयोग कर सकते हैं।
आप अंतर-थ्रेड लॉकिंग के लिए इंटर-प्रोसेस और पायथन के सेमफोर के लिए fcntl के संयोजन का भी उपयोग कर सकते हैं।
और आखिरकार: अपने आर्किटेक्चर पर पुनर्विचार करें। लॉकिंग आम तौर पर खराब है। एक प्रक्रिया के लिए संसाधन का प्रतिनिधि जो लॉकिंग के बिना इसका ख्याल रखेगा। इसे बनाए रखने के लिए यह और अधिक आसान होगा। मुझ पर विश्वास करो।
स्रोत
2012-09-16 20:57:02
मुझे किसी भी समाधान में रुचि होगी। – cji
कोशिश करें [ilock] (https://github.com/symonsoft/ilock) लाइब्रेरी – Symon