2017-05-10 19 views
10

चैनल.क्लोज़() का उपयोग कर kotlinx.coroutines चैनल को बंद करना और मैन्युअल रूप से बंद करने वाले चैनलों का नकारात्मक प्रभाव क्या होगा? यदि मैं मैन्युअल रूप से चैनल बंद नहीं करता हूं तो क्या कुछ अनावश्यक प्रक्रिया होगी? क्या चैनल के संदर्भ में कहीं ऐसा संदर्भ होगा जो इसे जीसीडी होने से रोकता है? या क्या करीबी कार्य चैनल के संभावित उपयोगकर्ताओं को सूचित करने के तरीके के रूप में मौजूद है कि इसका अब उपयोग नहीं किया जा सकता है।क्या kotlinx.coroutines चैनल को बंद करना

(प्रश्न Kotlin मंच https://discuss.kotlinlang.org/t/closing-coroutine-channels/2549 से फिर से पोस्ट किया)

उत्तर

7

धारणात्मक एक चैनल बंद करने से यह चैनल पर एक विशेष "पास टोकन" भेजकर कार्य करती है। जब आप उपभोक्ताओं द्वारा संसाधित किए जाने वाले तत्वों का एक सीमित अनुक्रम प्राप्त करते हैं तो आप एक चैनल बंद करते हैं और आपको उपभोक्ताओं को संकेत देना होगा कि यह अनुक्रम खत्म हो गया है। आपको अन्यथा एक चैनल बंद करने की ज़रूरत नहीं है।

चैनल किसी मूल संसाधन से बंधे नहीं हैं और उन्हें अपनी याददाश्त जारी करने के लिए बंद नहीं होना चाहिए। बस एक चैनल के सभी संदर्भ छोड़ना ठीक है। जीसी इसे साफ करने के लिए आएगा।

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