2010-01-02 12 views
8

मैं लिनक्स/केडीई में एक नई परियोजना के लिए आईपीसी तंत्र के रूप में D-Bus का उपयोग शुरू कर रहा हूं। और मैंने पाया है कि दस्तावेज़ीकरण वास्तव में समरूपता को बिल्कुल संबोधित नहीं करता है। डी-बस सेवाओं को विभिन्न ग्राहकों से आने वाली कई समवर्ती कॉलों से निपटने की उम्मीद कैसे की जाती है? थ्रेडिंग मॉडल क्या है? क्या एक सेवा यह मान सकती है कि यह एकल-थ्रेडेड है और डी-बस अपने आप अनुरोधों को कतारबद्ध करेगा?डी-बस थ्रेडिंग मॉडल

उत्तर

5

प्रोटोकॉल के रूप में, डी-बस थ्रेडिंग को संबोधित नहीं करता है।

डी-बस कनेक्शन संदेश क्रमशः प्राप्त करते हैं। प्रोटोकॉल स्तर पर, संदेश का जवाब एसिंक्रोनस होता है: यानी प्रेषक को अधिक संदेश भेजने से पहले जवाबों का इंतजार नहीं करना पड़ता है।

सिद्धांत रूप में एक डी-बस कार्यान्वयन एक साथ सेवा कार्यान्वयन के लिए संदेशों को प्रेषित कर सकता है, मुझे ऐसा करने वाले किसी भी व्यक्ति के बारे में पता नहीं है।

आमतौर पर, डी-बस कार्यान्वयन (या "बाध्यकारी", यदि आप करेंगे) सेवा को प्रत्येक विधि (या यहां तक ​​कि प्रत्येक विधि कॉल के लिए) का निर्णय लेने की अनुमति देता है चाहे आने वाली विधि कॉल को सिंक्रनाइज़ या असीमित रूप से प्रतिसाद दें। इसका विवरण आपके द्वारा उपयोग किए जा रहे विशेष कार्यान्वयन तक है।

यदि आप विधि कॉल को अतुल्यकालिक रूप से प्रतिसाद दे रहे हैं, तो आपका सेवा कार्यान्वयन यह सुनिश्चित करने के लिए ज़िम्मेदार है कि एकाधिक प्रतिक्रिया लंबित होने पर कोई भी राज्य सुसंगत रहता है। यदि आप हमेशा समकालिक रूप से प्रतिक्रिया देते हैं, तो आप जानते हैं कि आप एक समय में केवल एक विधि कॉल से निपट रहे हैं।

+1

धन्यवाद। यह Qt बाध्यकारी का उपयोग कर कुबंटू में मैंने जो देखा उसके साथ संगत है। अगर मैंने अपनी रिमोट सर्विस विधि (स्लॉट) में ब्रेकपॉइंट सेट किया है और फिर इसे दो क्लाइंट से बुलाया है, तो दूसरा क्लाइंट पूरी तरह अवरुद्ध था जब तक कि मेरा कोड पहले संदेश को संसाधित नहीं कर लेता। लेकिन मुझे यकीन नहीं था कि क्या मैं इस पर भरोसा कर सकता हूं। –

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