के लिए लॉकिंग तंत्र मैं लिनक्स पर साझा स्मृति का उपयोग करके दो या दो से अधिक प्रक्रियाओं के बीच डेटा को इंटरचेंज करने के लिए एक तंत्र विकसित कर रहा हूं। समस्या यह है कि साझा स्मृति पर डेटा अखंडता को बनाए रखने के लिए समेकन नियंत्रण के कुछ स्तर की आवश्यकता होती है, और जैसा कि मैं देख रहा हूं कि कभी-कभी मेरी प्रक्रिया को मार/क्रैश किया जा सकता है, आम लॉक तंत्र 'काम नहीं करते क्योंकि वे स्मृति छोड़ सकते हैं एक "लॉक" स्थिति में और मरने के ठीक बाद, अन्य प्रक्रियाओं को लॉक के रिलीज के लिए इंतजार कर लटका दिया।साझा-स्मृति स्थिरता
तो, कुछ शोध कर मैंने पाया है कि सिस्टम वी सेमफोरों में SEM_UNDO नामक ध्वज है जो प्रोग्राम विफल होने पर लॉक स्थिति को वापस कर सकता है, लेकिन यह काम करने की गारंटी नहीं है। एक और विकल्प पीआईडी की उन सभी प्रक्रियाओं से निगरानी करना है जो साझा स्मृति का उपयोग कर सकते हैं और अगर कुछ बुरा होता है तो उन पर कुछ नियंत्रण होता है, लेकिन मुझे यकीन नहीं है कि यह मेरी समस्या का सही दृष्टिकोण हो सकता है।
कोई विचार ?? :)
संपादित करें: स्पष्टीकरण उद्देश्यों के लिए, हमारे ऐप को संभवतः सबसे छोटी विलंबता के साथ किसी प्रकार की आईपीसी तंत्र की आवश्यकता है। इसलिए, मैं उन तंत्रों के लिए खुला हूं जो इस आवश्यकता को भी संभाल सकते हैं।
फिर भी एक और विकल्प नहीं उपयोग करने के लिए है साझा स्मृति - मैं प्रोग्रामर के लिए ऐसा लगता है कि भयानक आकर्षण कभी नहीं समझा। कई अन्य आईपीसी तंत्र हैं (कुछ पूर्व निर्मित और साझा स्मृति पर परीक्षण), तो उनका उपयोग क्यों नहीं करें? प्रदर्शन के लिए –
। हमारे आवेदन microsecond विलंबता पर काम करने की जरूरत है। आईपीसी तंत्र हैं जो इस प्रदर्शन को प्राप्त कर सकते हैं? – scooterman
@scooterman आप किस वास्तविक समय लिनक्स संस्करण का उपयोग कर रहे हैं? –