タグ付けされた質問 「suspend」

6
コトリンコルーチンでのサスペンド機能の意味
私はコトリンコルーチンを読んでいて、それがsuspend機能に基づいていることを知っています。しかし、どういうsuspend意味ですか? コルーチンまたは関数が中断されますか? https://kotlinlang.org/docs/reference/coroutines.htmlから 基本的に、コルーチンはスレッドをブロックせずに中断できる計算です 「サスペンド機能」とよく言われます。しかし、関数が終了するのを待っているので中断されるのはコルーチンだと思いますか?「一時停止」は通常「操作を停止する」ことを意味します。この場合、コルーチンはアイドル状態です。 weコルーチンは一時停止されていると言えますか? どのコルーチンが一時停止されますか? https://kotlinlang.org/docs/reference/coroutines.htmlから 類推を続けると、await()は、何らかの計算が完了するまでコルーチンを中断してその結果を返す中断関数(したがって、非同期{}ブロック内からも呼び出し可能)にすることができます。 async { // Here I call it the outer async coroutine ... // Here I call computation the inner coroutine val result = computation.await() ... } 🤔「計算が完了するまでコルーチンを一時停止する」とありますが、コルーチンは軽量スレッドのようなものです。したがって、コルーチンが中断されている場合、どのように計算を実行できますか? 私たちは見るawaitに呼び出されたcomputationことがあるかもしれないので、asyncそれを返すDeferredことが別のコルーチンを開始できる手段、 fun computation(): Deferred<Boolean> { return async { true } } quote コルーチンを一時停止するという引用。それsuspendは外側のasyncコルーチン、またはsuspend内側のcomputationコルーチンを意味しますか? いsuspendながら、外側のことを意味しasyncコルーチンが(待っているawait内側のために)computationそれ(アウター、仕上げにコルーチンasyncコルーチン)スレッドプールには空転(名前の由来は、サスペンド)と戻り、スレッド、および時に子computationコルーチンが終了すると、それは(外asyncコルーチン)ウェイクアップし、プールから別のスレッドを取得して続行しますか? …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.