लिनक्स में संदेश कतार और पाइप के बीच क्या अंतर है?पाइप बनाम संदेश कतार
उत्तर
मेरे सिर के ऊपर बंद और आप POSIX संदेश कतार (नहीं SysV वाले) के बारे में बात यह सोचते हैं:
- पाइप्स आकार में सीमित नहीं हैं, संदेश कतार में हैं।
- पाइप्स को फाइल डिस्क्रिप्टर का उपयोग करके सिस्टम में एकीकृत किया जा सकता है, संदेश कतारों का अपना स्वयं का फ़ंक्शन है, हालांकि लिनक्स
select()
,poll()
,epoll()
औरmqd_t
पर मित्र का समर्थन करता है। - पाइप्स, एक बार बंद होने के बाद, दोनों पक्षों को पुनः स्थापित करने के लिए कुछ पक्षों की सहायता की आवश्यकता होती है, संदेश पंक्तियों को बंद कर दिया जा सकता है और दूसरी तरफ के सहभागिता के बिना दोनों तरफ फिर से खोल दिया जा सकता है।
- पाइप फ्लैट की तरह फ्लैट हैं, एक संदेश संरचना को लागू करने के लिए आपको दोनों तरफ प्रोटोकॉल लागू करना होगा, संदेश कतार पहले से ही संदेश उन्मुख हैं, कहने के लिए कोई सावधानी बरतनी नहीं है, कहें, पांचवां संदेश कतार।
वे वास्तव में बहुत अलग चीजें हैं।
सबसे बड़ा व्यावहारिक अंतर यह है कि एक पाइप में "संदेश" की धारणा नहीं है, यह केवल write()
बाइट्स और read()
बाइट्स के लिए एक पाइप है। प्राप्त करने वाले अंत में यह जानने का एक तरीका होना चाहिए कि आपके प्रोग्राम में डेटा का एक टुकड़ा "संदेश" का गठन करता है, और आपको इसे स्वयं लागू करना होगा। इसके अलावा बाइट्स का क्रम परिभाषित किया गया है: बाइट्स आपके द्वारा दिए गए क्रम में बाहर आ जाएंगे। और, आम तौर पर बोलते हुए, इसमें एक इनपुट और एक आउटपुट होता है।
एक संदेश कतार का उपयोग "संदेशों" को स्थानांतरित करने के लिए किया जाता है, जिसमें एक प्रकार और आकार होता है। तो प्राप्त करने वाला अंत केवल एक निश्चित संदेश के साथ एक "संदेश" की प्रतीक्षा कर सकता है, और यदि यह पूर्ण है या नहीं, तो आपको चिंता करने की ज़रूरत नहीं है। कई प्रक्रियाएं एक ही कतार से भेज और प्राप्त कर सकती हैं।
अधिक जानकारी के लिए man mq_overview
और/या man svipc
देखें।
कतार में भी आप किसी भी संरचना को संदेश के रूप में भेज सकते हैं ताकि इस मामले में प्राप्त करने वाले अंत को भी पता होना चाहिए कि "आपके प्रोग्राम में डेटा का किस प्रकार का संदेश है। –
- 1. पायथन मल्टीप्रोसेसिंग - पाइप बनाम कतार
- 2. संदेश कतार बनाम कार्य कतार अंतर
- 3. संदेश कतार
- 4. जावा एनआईओ पाइप बनाम ब्लॉकिंगक्यूयू
- 5. संदेश कतार (जेएमएस)
- 6. संदेश कतार सोच
- 7. संदेश/नौकरी कतार
- 8. संदेश कतार या शेड्यूलर
- 9. बूस्ट संदेश कतार
- 10. Memcache- आधारित संदेश कतार?
- 11. साधारण कतार बनाम SEDA कतार
- 12. संदेश कतारों बनाम सॉकेट
- 13. पाइप बनाम अस्थायी फ़ाइल
- 14. सी/सी ++ रिमोट संदेश कतार
- 15. क्यों एक विंडोज़ संदेश कतार
- 16. socket.io और खाली संदेश कतार
- 17. NServiceBus एमएसएमक्यू संदेश आउटगोइंग कतार
- 18. ConcurrentQueue बनाम कतार + लॉक
- 19. लीडर/अनुयायी बनाम कतार
- 20. पाइप और संदेश कतारों के बीच सभी अंतर क्या हैं?
- 21. माइक्रोसॉफ्ट संदेश कतार - प्राथमिकता झंडा या एक अलग कतार?
- 22. सी ++ डेक बनाम कतार बनाम स्टैक
- 23. बूस्ट संदेश कतार POSIX संदेश कतार पर आधारित नहीं है? चुनने के लिए असंभव (2)?
- 24. मेरी मशीन पर संदेश कतार में संदेश भेजना ..... त्रुटि "अमान्य कतार पथ नाम"
- 25. डिस्पैच_सिंक बनाम dispatch_async मुख्य कतार
- 26. सेवा ब्रोकर कतार में संदेश कैसे हटाएं
- 27. जेएमएस कतार संदेश प्राप्त करते हैं?
- 28. संदेश कतार के लिए अच्छी रणनीति?
- 29. लाखों विषयों के लिए संदेश कतार समाधान
- 30. संदेश कतार - एमएसएमक्यू की तरह कुछ?
ठीक है, बहुत बहुत धन्यवाद ... लेकिन मुझे एक छोटा सा संदेह है कि "एक बार बंद होने वाले पाइपों को दोनों तरफ से किसी तरह का समर्थन की आवश्यकता होती है", तो आप इस बिंदु को हाइलाइट करना चाहते हैं कि पाइप कर्नेल लगातार नहीं हैं और संदेश क्यूस हैं .. और पाइप को फिर से बंद करने के लिए वास्तव में किस तरह के suport की आवश्यकता है? – mint9
@ mint9: अच्छी तरह से बोलते हुए आपको सिगिप पकड़ने की ज़रूरत है, इसे गहन तरीके से संभालें, फिर पाइप को फिर से खोलें। मुझे कल्पना है कि आप अपनी प्रक्रिया (दोनों तरफ) कर सकते हैं, अपने stdin/stdout को डुप्लिकेट करें, माता-पिता को चलते रहें (वे गार्ड के रूप में कार्य करते हैं), फिर बंद होने पर आप अपने बच्चों को मरने दें (दोनों तरफ) और कांटा/डुप्ली/पाइप प्रक्रिया। – hroptatyr
ठीक है, मुझे मिल गया। धन्यवाद – mint9