मैं किसी के लिए पोस्ट फ़ंक्शन का उपयोग करने के लिए मुझे पेशेवर (और विपक्ष) बताना चाहता हूं। मुझे पोस्ट का उपयोग क्यों करना चाहिए और मुझे कब इसका उपयोग नहीं करना चाहिए?बढ़ावा :: asio :: io_service - पोस्ट फ़ंक्शन का उपयोग क्यों करें?
उत्तर
पोस्ट बहुत उपयोगी है जब आप कॉलबैक अनिवार्य रूप से होने के लिए चाहते हैं, लेकिन वर्तमान संदर्भ में नहीं। कारणों में शामिल हो सकते हैं:
वर्तमान संदर्भ ताले रख रहा है और आप रिलीज होने के बाद फ़ंक्शन को कॉल करना चाहते हैं। यह फ़ंक्शन को उन लॉक को बिना किसी डेडलॉक के प्राप्त करने की अनुमति देगा।
कॉल स्टैक बहुत गहरी
हो सकता है वर्तमान धागा किसी अन्य तरीके से समारोह के लिए अनुपयुक्त हो सकता है, और बाद में एक और धागा में समारोह का समय निर्धारण के लिए एक सुविधाजनक तरीका है।
मेरा अनुमान है कि आप dispatch()
करने के लिए post()
तुलना कर रहे हैं। सामान्यतः, post()
सुरक्षित है, क्योंकि dispatch()
हैंडलर को तुरंत कॉल कर सकता है, और ईवेंट-संचालित प्रोग्रामिंग में जोखिम होता है जिसे आप अप्रत्याशित तरीकों से कतारबद्ध घटनाओं को प्रभावित करते हैं। कॉल स्टैक को छोटा रखने में भी योग्यता है, और अधिक अनुमानित व्यवहार (dispatch()
अब चलाया जा सकता है या बाद में चलाया जा सकता है)।
मुझे अभी post()
वर्तमान io_service
ईवेंट/हैंडलर/ऑपरेशन खत्म होने के बाद ऑब्जेक्ट को हटाने के लिए उपयोगी पाया गया है।
- 1. बूस्ट asio io_service प्रेषण बनाम
- 2. एएसआईओ IO_SERVICE कार्यान्वयन को बढ़ावा दें?
- 3. बढ़ावा :: asio बहुस्त्र्पीय उदाहरण
- 4. बेहतर बढ़ावा asio उदाहरण
- 5. बढ़ावा asio टीसीपी सत्र खुला रखने
- 6. एक बढ़ावा :: गतिशील रूप से लोड पुस्तकालयों के बीच asio :: io_service वस्तु साझा करना
- 7. क्या बढ़ावा देता है :: asio :: io_service हैंडलर के आदेश को सुरक्षित रखता है?
- 8. बूस्ट asio io_service.run()
- 9. मुझे io_service :: कार्य का उपयोग क्यों करना चाहिए?
- 10. फ़ंक्शन तर्कों में पोस्ट-वृद्धि का उपयोग
- 11. क्यों उपयोग करें (फ़ंक्शन() {....}());
- 12. io_service :: run()
- 13. boost :: asio :: async_write, 65536 बाइट्स
- 14. डिवाइस फ़ाइलों के साथ एएसओ का उपयोग कैसे करें
- 15. कैसे asio साथ std :: स्ट्रिंग का उपयोग करना :: बफर()
- 16. बढ़ावा देता है :: asio :: ip :: tcp :: resolver :: iterator क्या करता है?
- 17. सी ++ 03 में किसी io_service पर boost packaged_task को आप कैसे पोस्ट करते हैं?
- 18. बढ़ावा :: asio :: ip :: tcp :: सॉकेट जुड़ा हुआ है?
- 19. क्यों std नहीं कर सकते :: बाँध और बढ़ावा देने :: बाँध इस Boost.Asio ट्यूटोरियल
- 20. बढ़ावा देने के लिए प्रॉक्सी समर्थन कैसे जोड़ें :: asio?
- 21. बढ़ावा सी ++ पुस्तकालयों का उपयोग करें?
- 22. io_service, इसका उपयोग क्यों और कैसे किया जाता है?
- 23. किसी को कैसे बढ़ावा देना चाहिए :: asio :: ip :: udp :: सॉकेट?
- 24. बढ़ावा लैम्ब्डा का सही उपयोग
- 25. क्या मैं एकाधिक बूस्ट सॉकेट के लिए एक ही बूस्ट :: asio :: io_service का उपयोग कर सकता हूं?
- 26. बूस्ट asio deadline_timer
- 27. boost :: asio, asynchronous read error
- 28. बूस्ट Asio serial_port - आईओ
- 29. बढ़ावा के आईपी पते को कैसे प्राप्त करें :: asio :: ip :: tcp :: सॉकेट?
- 30. file_get_contents का उपयोग करके PHP में डेटा कैसे पोस्ट करें?
यह आपको रुचि दे सकता है "http://stackoverflow.com/questions/2326588/boost-asio-io-service-dispatch-vs-post" – Arunmu
टिप के लिए धन्यवाद! मैं अनजान था :-) – eve
@ अरुणमु: मैंने पहले उस लिंक को देखा है, मैं विस्तारित उत्तर की उम्मीद कर रहा था। – eve