लेख की सामग्री मेरे से ली गई है
टोन जनरेटर उदाहरण में सुधार
पिछले में
जब हमें सर्किट की आवश्यकता नहीं रह जाती है, तो डेटा पाइपलाइन को रोककर मेमोरी को मुक्त करना शुरू कर देना चाहिए। ऐसा करने के लिए, आपको फ़ंक्शन का उपयोग करके सर्किट से घड़ी स्रोत और टिकर को डिस्कनेक्ट करना होगा ms_ticker_detach(). हमारे मामले में, हमें फ़िल्टर इनपुट से टिकर को डिस्कनेक्ट करना होगा voidsource:
ms_ticker_detach(ticker, voidsource)
वैसे, कन्वेयर को रोकने के बाद, हम इसके सर्किट को बदल सकते हैं और इसे फिर से ऑपरेशन में डाल सकते हैं, फिर से टिकर को जोड़ सकते हैं।
अब हम फ़ंक्शन का उपयोग करके इसे हटा सकते हैं ms_ticker_destroy():
ms_ticker_destroy(ticker)
कन्वेयर बंद हो गया है और हम फिल्टर को डिस्कनेक्ट करके इसके कुछ हिस्सों को अलग करना शुरू कर सकते हैं। ऐसा करने के लिए, फ़ंक्शन का उपयोग करें ms_filter_unlink():
ms_filter_unlink(voidsource, 0, dtmfgen, 0);
ms_filter_unlink(dtmfgen, 0, snd_card_write, 0);
तर्कों का उद्देश्य फ़ंक्शन के समान ही है ms_filter_link().
हम अब अलग किए गए फ़िल्टर का उपयोग करके हटा देते हैं ms_filter_destroy():
ms_filter_destroy(voidsource);
ms_filter_destroy(dtmfgen);
ms_filter_destroy(snd_card_write);
इन पंक्तियों को अपने उदाहरण में जोड़कर, हम मेमोरी प्रबंधन के दृष्टिकोण से एक सही प्रोग्राम समाप्ति प्राप्त करेंगे।
जैसा कि हम देख सकते हैं, प्रोग्राम को सही ढंग से पूरा करने के लिए हमें शुरुआत में कोड की लगभग उतनी ही पंक्तियाँ जोड़ने की आवश्यकता थी, प्रति फ़िल्टर कोड की औसतन चार पंक्तियाँ। यह पता चला है कि प्रोग्राम कोड का आकार प्रोजेक्ट में उपयोग किए जाने वाले फ़िल्टर की संख्या के अनुपात में बढ़ जाएगा। यदि हम सर्किट में एक हजार फिल्टर के बारे में बात करते हैं, तो उन्हें बनाने और नष्ट करने के लिए नियमित संचालन की चार हजार लाइनें आपके कोड में जोड़ दी जाएंगी।
अब आप जानते हैं कि मीडिया स्ट्रीमर का उपयोग करके किसी प्रोग्राम को सही तरीके से कैसे समाप्त किया जाए। निम्नलिखित उदाहरणों में, सघनता के लिए, मैं ऐसा करना "भूल जाऊंगा"। लेकिन आप भूलेंगे नहीं?
मीडिया स्ट्रीमर के डेवलपर्स ने सर्किट को असेंबल/डिसैम्बल करते समय फिल्टर में हेरफेर की सुविधा के लिए सॉफ्टवेयर टूल उपलब्ध नहीं कराए। फिर भी, एक सहायक है जो आपको सर्किट से फ़िल्टर को तुरंत डालने/हटाने की अनुमति देता है।
हम इस समस्या को बाद में हल करने के लिए लौटेंगे, जब हमारे उदाहरणों में फ़िल्टर की संख्या कुछ दर्जन से अधिक हो जाएगी।
अगला
स्रोत: www.habr.com