2011-07-31 16 views
7

मैं किसी के लिए पोस्ट फ़ंक्शन का उपयोग करने के लिए मुझे पेशेवर (और विपक्ष) बताना चाहता हूं। मुझे पोस्ट का उपयोग क्यों करना चाहिए और मुझे कब इसका उपयोग नहीं करना चाहिए?बढ़ावा :: asio :: io_service - पोस्ट फ़ंक्शन का उपयोग क्यों करें?

+1

यह आपको रुचि दे सकता है "http://stackoverflow.com/questions/2326588/boost-asio-io-service-dispatch-vs-post" – Arunmu

+2

टिप के लिए धन्यवाद! मैं अनजान था :-) – eve

+0

@ अरुणमु: मैंने पहले उस लिंक को देखा है, मैं विस्तारित उत्तर की उम्मीद कर रहा था। – eve

उत्तर

8

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

  • वर्तमान संदर्भ ताले रख रहा है और आप रिलीज होने के बाद फ़ंक्शन को कॉल करना चाहते हैं। यह फ़ंक्शन को उन लॉक को बिना किसी डेडलॉक के प्राप्त करने की अनुमति देगा।

  • कॉल स्टैक बहुत गहरी

  • हो सकता है वर्तमान धागा किसी अन्य तरीके से समारोह के लिए अनुपयुक्त हो सकता है, और बाद में एक और धागा में समारोह का समय निर्धारण के लिए एक सुविधाजनक तरीका है।

0

मेरा अनुमान है कि आप dispatch() करने के लिए post() तुलना कर रहे हैं। सामान्यतः, post() सुरक्षित है, क्योंकि dispatch() हैंडलर को तुरंत कॉल कर सकता है, और ईवेंट-संचालित प्रोग्रामिंग में जोखिम होता है जिसे आप अप्रत्याशित तरीकों से कतारबद्ध घटनाओं को प्रभावित करते हैं। कॉल स्टैक को छोटा रखने में भी योग्यता है, और अधिक अनुमानित व्यवहार (dispatch() अब चलाया जा सकता है या बाद में चलाया जा सकता है)।

मुझे अभी post() वर्तमान io_service ईवेंट/हैंडलर/ऑपरेशन खत्म होने के बाद ऑब्जेक्ट को हटाने के लिए उपयोगी पाया गया है।

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