2012-03-29 11 views
6

में पॉज़िक्स संदेश कतार का उपयोग करके सिंगल प्रेषक और एकाधिक रिसीवर प्रक्रियाएं mq_send() का उपयोग कर संदेश कतार में एक संदेश भेजने के बाद लेखक प्रक्रिया है, एकाधिक पाठक प्रक्रिया mq_receive() का उपयोग कर संदेश पढ़ सकते हैं। मुझे उम्मीद है कि 1 mq पर लिखें और mq से 1 पढ़ा गया है, संदेश खो गया है।लिनक्स

तो मैं सिर्फ यह जानना चाहता हूं कि मेरी समझ गलत है या नहीं। क्या कोई तरीका है ताकि एक लेखक और एकाधिक पाठक प्रक्रिया पॉज़िक्स संदेश कतारों का उपयोग करके संवाद कर सकें।

उत्तर

7

हाँ आपकी समझ सही है। आप POSIX संदेश कतारों के साथ विश्वसनीय रूप से ऐसा नहीं कर सकते हैं। यदि आप एक ही संदेश को अलग-अलग धागे/प्रक्रियाओं से संवाद करना चाहते हैं तो आपको प्रत्येक पाठक के लिए एक अलग कतार का उपयोग करना चाहिए।

यदि आप SYSV संदेश कतार में स्विच करते हैं तो आप यह कर सकते हैं। Msgsnd() और msgrcv() प्रोटोकॉल पर सहमत कुछ संदेशों में संदेश के संदेश प्रकार फ़ील्ड में हेरफेर कर सकते हैं। उदाहरण के लिए लेखक प्रक्रिया संदेश के संदेश प्रकार को पाठक प्रक्रिया के पीआईडी ​​बनाती है; और पाठक प्रक्रिया केवल उस संदेश प्रकार के संदेशों को पढ़ने का अनुरोध करेगी। ध्यान दें कि यह अभी भी लेखक को प्रत्येक पाठक प्रक्रिया के लिए एक संदेश लिखने की आवश्यकता है।