2011-08-26 17 views
5

मेरे पास निम्नलिखित बढ़ावा है :: इंटरप्रोसेस :: message_queue संबंधित प्रश्न।बूस्ट संदेश कतार

जैसा कि इरादा है कि मैं> = 2 प्रक्रियाओं के बीच एक संदेश कतार साझा करने की योजना बना रहा हूं। स्पष्ट रूप से संदेश कतार के अंदर उनमें से एक क्रैश हो सकता है। नतीजतन यह आंतरिक ताले रखेगा, जिससे कतार अन्य प्रक्रियाओं के लिए पहुंच योग्य हो जाएगी। यह कैसे हल किया जा सकता है? इस्तेमाल किए गए आंतरिक म्यूटेक्स को अनलॉक करने का कोई तरीका प्रतीत नहीं होता है।

उत्तर

0

हम अन्य प्रक्रियाओं (1 मिनट या उससे अधिक की आवश्यकता के आधार पर अधिक) में पूर्वानुमान की प्रतीक्षा करने की विधि का उपयोग कर सकते हैं, तो अगर यह दूसरी प्रक्रिया द्वारा कतार को मजबूती से अनलॉक कर देता है तो फिर पढ़ने के बाद पुशिंग और अनलॉक करने के लिए फिर से लॉक करें?

अधिक जानकारी के लिए नीचे दिए गए रेफरी देखें।

http://en.cppreference.com/w/cpp/thread/condition_variable/wait

संपादित करें:

हम आंतरिक ताले अनलॉक नहीं कर पा, मैंने सोचा कि आप मैन्युअल कतार

scoped_lock ताला (म्युटेक्स) का उपयोग कर ताला लगा रहे हैं;

तो आप समय समाप्त होने पर predicate_wait का उपयोग करके अनलॉक कर सकते हैं और फिर इसे अनलॉक कर सकते हैं। अन्य प्रक्रिया से ।

+0

हाय अली, हम कैसे "दूसरी प्रक्रिया द्वारा कतार को मजबूती से अनलॉक करते हैं"? –

+0

नमस्ते, बलपूर्वक इसका मतलब है कि शर्त पूरी होने के बाद मैन्युअल रूप से कतार को अनलॉक करें। – Ali786

+0

कृपया निर्दिष्ट करें कि "कतार को मैन्युअल रूप से अनलॉक करें" http://www.boost.org/doc/libs/1_55_0/doc/html/boost/interprocess/message_queue_t.html –

संबंधित मुद्दे