मैं Kotlin Coroutine पढ़ रहा हूं और जानता हूं कि यह suspendफ़ंक्शन पर आधारित है। लेकिन क्या suspendमतलब है?
Coroutine या फ़ंक्शन निलंबित हो जाता है?
से https://kotlinlang.org/docs/reference/coroutines.html
मूल रूप से, कॉरटुएंट ऐसी संगणनाएं होती हैं जिन्हें एक धागे को अवरुद्ध किए बिना निलंबित किया जा सकता है
मैंने सुना है कि लोग अक्सर "फंक्शन सस्पेंड" करते हैं। लेकिन मुझे लगता है कि यह कोरटाइन है जो निलंबित हो जाता है क्योंकि यह कार्य समाप्त होने की प्रतीक्षा कर रहा है? "सस्पेंड" का आमतौर पर मतलब होता है "युद्ध विराम", इस मामले में कॉरटीन बेकार है।
We क्या हमें यह कहना चाहिए कि धनिया निलंबित है?
किस कोरटाइन को निलंबित किया जाता है?
से https://kotlinlang.org/docs/reference/coroutines.html
सादृश्य जारी रखने के लिए, प्रतीक्षा करना () एक निलंबित कार्य हो सकता है (इसलिए async {} ब्लॉक से भी कॉल करने योग्य) जो कुछ गणना किए जाने तक एक coroutine को निलंबित कर देता है और उसका परिणाम देता है:
async { // Here I call it the outer async coroutine
...
// Here I call computation the inner coroutine
val result = computation.await()
...
}
That यह कहता है कि "जब तक कुछ गणना नहीं की जाती है, तब तक एक कोरटाइन को निलंबित कर दिया जाता है", लेकिन कोरआउट एक हल्के धागे की तरह है। तो अगर कोरटाइन को निलंबित कर दिया जाता है, तो गणना कैसे की जा सकती है?
हम देखते हैं awaitकि इसे चालू किया गया है computation, इसलिए यह हो सकता है asyncकि रिटर्न Deferred, जिसका अर्थ है कि यह एक और कोरआउट शुरू कर सकता है
fun computation(): Deferred<Boolean> {
return async {
true
}
}
That उद्धरण कहता है कि एक कोरटाइन को निलंबित करता है । क्या इसका मतलब suspendबाहरी asyncकोरआउट, या suspendआंतरिक computationकोरआउट है?
क्या suspendमतलब है कि जबकि बाहरी asynccoroutine (प्रतीक्षा कर रहा है awaitआंतरिक के लिए) computationसमाप्त करने के लिए coroutine, यह (बाहरी asynccoroutine) idles (इसलिए नाम को निलंबित) और रिटर्न धागा थ्रेड पूल के लिए, और जब बच्चे computationcoroutine खत्म, यह (बाहरी asynccoroutine ) उठता है, पूल से एक और धागा लेता है और जारी रहता है?
मेरे द्वारा धागे का उल्लेख करने का कारण https://kotlinlang.org/docs/tutorials/coroutines-basic-jvm.html है।
थ्रेड को पूल में लौटाया जाता है, जबकि कॉरटीन इंतज़ार कर रहा है, और जब वेटिंग पूरी हो जाती है, तो कॉरटीन पूल में एक मुक्त थ्रेड पर फिर से शुरू होता है
