मैं 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
मतलब है कि जबकि बाहरी async
coroutine (प्रतीक्षा कर रहा है await
आंतरिक के लिए) computation
समाप्त करने के लिए coroutine, यह (बाहरी async
coroutine) idles (इसलिए नाम को निलंबित) और रिटर्न धागा थ्रेड पूल के लिए, और जब बच्चे computation
coroutine खत्म, यह (बाहरी async
coroutine ) उठता है, पूल से एक और धागा लेता है और जारी रहता है?
मेरे द्वारा धागे का उल्लेख करने का कारण https://kotlinlang.org/docs/tutorials/coroutines-basic-jvm.html है।
थ्रेड को पूल में लौटाया जाता है, जबकि कॉरटीन इंतज़ार कर रहा है, और जब वेटिंग पूरी हो जाती है, तो कॉरटीन पूल में एक मुक्त थ्रेड पर फिर से शुरू होता है