select संदेश कतार को बढ़ावा देने के लिए POSIX संदेश कतार पर आधारित नहीं है? चयन करने के लिए असंभव(2)?




boost message-queue (2)

मैंने सोचा कि मैं बूस्ट का उपयोग करूँगा। एक मेजबान के भीतर संचार के लिए कुर्सियों के स्थान पर इंटरप्रोस की संदेश पंक्ति । लेकिन इसमें खुदाई करने के बाद, ऐसा लगता है कि किसी कारण के लिए यह लाइब्रेरी POSIX संदेश कतार सुविधा (जो कि मेरी लिनक्स सिस्टम का समर्थन करती है) को छोड़ती है, और इसके बजाय POSIX साझा मेमोरी के शीर्ष पर लागू किया गया है। इंटरफ़ेस इतनी ही समान है कि आप इसे तुरंत अनुमान नहीं लगा सकते हैं, लेकिन ऐसा लगता है कि यह मामला है।

मेरे लिए नकारात्मक पक्ष यह है कि shm_open(3) माध्यम से मिली साझा स्मृति को select(2) साथ प्रयोग करने योग्य नहीं लगता है, जैसा कि mq_open(3) माध्यम से प्राप्त POSIX संदेश कतारों के विपरीत है।

ऐसा लगता है कि बूस्ट की लाइब्रेरी इस मामले में हार जाती है। क्या किसी को यह समझना चाहिए कि यह क्यों होना चाहिए? यहां तक ​​कि अगर यह POSIX संदेश कतार केवल कुछ सिस्टमों पर उपलब्ध है, तो मैं बूस्ट को उस सुविधा का उपयोग करने की उम्मीद करता हूं जहां यह उपलब्ध है, और जहां आवश्यक हो वहां केवल इसे फिर से पूरा करना चाहिए। क्या पॉसिक्स प्रणाली का कुछ खतरा है जिसे मैं अभी तक नहीं पहचानता?


हाँ, दुर्भाग्यवश यह नहीं है मुझे यह भी निराश हुआ जब यह महसूस किया गया कि स्रोत खोदने के बाद

लेकिन यहां इस तथ्य की दूसरी (अच्छी) तरफ है: यदि आपका प्रोग्राम boost::asio का उपयोग करता है, तो आप पीओएसआईआईएस संदेश कतार एपीआई को सिर्फ एक और डाटाग्राम डेटा स्रोत के रूप में लपेट सकते हैं और यह (आईएमएचओ) का उपयोग करने के लिए बेहतर होगा यदि यह एक हिस्सा था को boost::interprocess ... यह काफी तुच्छ नहीं होगा, लेकिन (आईएमएचओ) निश्चित रूप से इस के हकदार हैं, इसलिए आप एक एकीकृत तरीके से w / MQ काम कर सकते हैं और अन्य boost::asio सामान की शक्ति का उपयोग कर सकते हैं ...

... मेरी अगली परियोजना में अगर मुझे फिर से POSIX MQ की आवश्यकता होगी, तो मैं निश्चित रूप से इस तरह से ले जाऊंगा :)


बूस्ट का उपयोग करते समय मैं एक समान स्थिति में गया था। इंटरप्रोसेस 'सिंक क्लासेस: अर्थात् हालत कक्षा इसे "सामान्य" तरीके से लागू किया गया है, लेकिन जिस तरह से यह किया गया है वह कस्टम स्पिनलॉक का उपयोग करना है जो कि अत्यधिक अक्षम है (कम से कम ओएस एक्स पर)। सभी उद्देश्यों और उद्देश्यों के लिए यह सिंक वर्ग बेकार बना दिया।

मेरे अनुभव में इंटरप्रोसेस पुस्तकालय सुंदर अपरिपक्व है। मैं इसे साझा स्मृति के लिए उपयोग करता हूं, और यह बहुत अच्छी तरह से काम करता है, लेकिन कुछ नुकीले किनारों हैं और मुझे कुछ "लापता सुविधाओं" जैसे कि साझा स्मृति को गतिशील रीसाइज़ करना आदि के आसपास हैक करना पड़ता है।

संक्षेप में, इस पुस्तकालय को अभी तक एक रजत बुलेट होने की उम्मीद नहीं है। यह अच्छा है, लेकिन इस समय असाधारण नहीं है







epoll