मैंने पढ़ा है कि विभिन्न धागे से सॉकेट पर एकाधिक संचालन की अनुशंसा नहीं की जाती है। लेकिन क्या होगा यदि मैं एक ही थ्रेड socket.async_read और अगली socket.async_write से कॉल करता हूं (पिछले के समाप्त होने की प्रतीक्षा किए बिना)? क्या मैं निष्पादित कर सकता हूं कि इस ऑपरेशन में से कोई एक पूरा होने पर उचित कॉलबैक चलाया जाएगा?Boost.asio: क्या मैं एक थ्रेड से एक साथ async_read और async_write कर सकता हूं?
6
A
उत्तर
11
मुझे पता चला है कि हाँ, आप एक ही समस्या के बिना एक ही सॉकेट पर async_read
और एक लंबित async_write
लंबित हो सकते हैं। जब आप io_service::run()
विधि को कॉल करते हैं, तो कॉलबैक अपेक्षित के रूप में पूरा हो जाएगा।
एक ही सॉकेट पर एकाधिक async_reads को जारी करना, या एक ही सॉकेट पर एकाधिक async_writes, परिणामस्वरूप सॉकेट के प्रकार के आधार पर अप्रत्याशित व्यवहार हो सकता है। विशेष रूप से, एक ही टीसीपी सॉकेट पर एकाधिक async_writes का उपयोग करके परिणामस्वरूप आपके द्वारा मूल रूप से अपेक्षा की जाने वाली तुलना में अलग-अलग क्रम में डेटा जा रहा है, और डेटा की इंटरमीक्सिंग भेजती है। यूडीपी में, यह अधिक उचित हो सकता है, लेकिन मैं अभी भी इसके खिलाफ अनुशंसा करता हूं।
संबंधित मुद्दे
- 1. Boost.Asio: ऑपरेशन async_read
- 2. boost.asio की सॉकेट की प्राप्त/प्रेषण कार्य खराब हैं?
- 3. खराब boost.ASIO प्रदर्शन
- 4. क्या मैं एक ही समय में रीबेज कर सकता हूं और स्क्वैश कर सकता हूं?
- 5. Boost.Asio और OpenSSL
- 6. Boost.Asio
- 7. मैं एक अलग थ्रेड पर सेवा कैसे चला सकता हूं?
- 8. सी # क्या मैं पृष्ठभूमिवर्क थ्रेड के साथ एक सूची बॉक्स में मूल्य जोड़ सकता हूं?
- 9. बूस्ट asio async_write: async_write कॉल को अंतःस्थापित नहीं करना है?
- 10. क्या मैं एक पीएल/एसक्यूएल संग्रह टुकड़ा कर सकता हूं?
- 11. क्या मैं एक कंप्यूटर पर एक आईफोन ऐप संकलित कर सकता हूं और इसे दूसरे पर हस्ताक्षर कर सकता हूं?
- 12. क्या मैं एक मॉड्यूल के साथ एक लिनक्स कर्नेल फ़ंक्शन को प्रतिस्थापित कर सकता हूं?
- 13. क्या मैं एक IMAP मेल उत्तर ट्रैक कर सकता हूं?
- 14. क्या मैं एक भौतिक फोन बैकअप ले सकता हूं और एमुलेटर को बहाल कर सकता हूं?
- 15. मैं वर्कर थ्रेड पर स्टैक ओवरफ़्लो से कैसे रोक सकता हूं या पुनर्प्राप्त कर सकता हूं?
- 16. क्या मैं क्लोजर में एक निर्धारित शफल कर सकता हूं?
- 17. क्या मैं डेटाकंट्रैक्ट और सीरियलज़ेबल को एक साथ उपयोग कर सकता हूं?
- 18. क्या मैं कोणीय के साथ `ng` के बजाय एक और उपसर्ग का उपयोग कर सकता हूं?
- 19. क्या मैं सबवर्सन मर्ज ट्रैकिंग के साथ एक शाखा से बार-बार विलय कर सकता हूं?
- 20. क्या मैं एक मर्कुरियल क्लोन अनुकूलित कर सकता हूं?
- 21. मैं एक चुप इंस्टॉल कैसे कर सकता हूं और वाईएक्स और एमएसआई के साथ अनइंस्टॉल कर सकता हूं?
- 22. क्या मैं एक मैवेन प्रोफाइल को सक्रिय कर सकता हूं?
- 23. क्या मैं एक गिट सबमिशन को अनपॉपलेट कर सकता हूं?
- 24. क्या मैं एक कस्टम कॉन्फ़िगरेशनसेक्शन पर IntegerValidator विशेषता के साथ एक सीमा निर्दिष्ट कर सकता हूं?
- 25. क्या मैं एक संकलित असेंबली डीबग कर सकता हूं?
- 26. क्या मैं एक टेबल-प्रति-प्रकार मैपिंग के साथ एक भेदभावकर्ता कॉलम निर्दिष्ट कर सकता हूं?
- 27. क्या मैं इको और बैश के साथ एक स्ट्रिंग में चर संरेखित कर सकता हूं?
- 28. क्या मैं मेजबाननाम * और * पोर्ट/etc/hosts के साथ एक पोर्ट मैप कर सकता हूं?
- 29. क्या मैं रूबी और पायथन का एक साथ उपयोग कर सकता हूं?
- 30. क्या मैं एक से एक .gitconfig फ़ाइल लोड कर सकता हूं?
क्या आप टीसीपी सॉकेट के बारे में पूछ रहे हैं? –