¿Qué significa suspender la función en Kotlin Coroutine?

Estoy leyendo Kotlin Coroutine y sé que se basa ensuspend función. Pero que hacesuspend ¿media?

Corutina o función se suspende?

Dehttps://kotlinlang.org/docs/reference/coroutines.html

Básicamente, las corutinas son cálculos que pueden suspenderse sin bloquear un hilo

Escuché que la gente a menudo dice "suspender la función". ¿Pero creo que es la corutina la que se suspende porque está esperando que termine la función? "suspender" generalmente significa "cesar la operación", en este caso la rutina está inactiva.

¿Deberíamos decir que la corutina está suspendida?

¿Qué corutina se suspende?

Dehttps://kotlinlang.org/docs/reference/coroutines.html

Para continuar con la analogía, await () puede ser una función de suspensión (por lo tanto, también se puede llamar desde un bloque asíncrono {}) que suspende una rutina hasta que se realiza algún cálculo y devuelve su resultado:

async { // Here I call it the outer async coroutine
    ...
    // Here I call computation the inner coroutine
    val result = computation.await()
    ...
}

Dice "que suspende una rutina hasta que se realiza algún cálculo", pero la rutina es como un hilo ligero. Entonces, si la rutina se suspende, ¿cómo se puede hacer el cálculo?

Vemosawait se llamacomputation, entonces podría serasync eso vuelveDeferred, lo que significa que puede comenzar otra rutina

fun computation(): Deferred<Boolean> {
    return async {
        true
    }
}

La cita diceque suspende una corutina. Significasuspend el exteriorasync corutina osuspend el interiorcomputation corutina?

Hacesuspend significa que si bien exteriorasync la corutina está esperandoawait) para el interiorcomputation corutina para terminarla (el exteriorasync corutina) está inactiva (de ahí el nombre suspendido) y devuelve el subproceso al grupo de subprocesos, y cuando el elemento secundariocomputation la rutina la termina (el exteriorasync corutina) se despierta, toma otro hilo de la piscina y continúa?

La razón por la que menciono el hilo es porhttps://kotlinlang.org/docs/tutorials/coroutines-basic-jvm.html

El hilo se devuelve a la agrupación mientras la rutina está esperando, y cuando la espera termina, la rutina se reanuda en una secuencia libre en la agrupación

Respuestas a la pregunta(3)

Su respuesta a la pregunta