O que significa função de suspensão na Kotlin Coroutine

Estou lendo Kotlin Coroutine e sei que é baseado emsuspend função. Mas o que fazsuspend significar?

A rotina ou a função são suspensas?

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

Basicamente, as corotinas são cálculos que podem ser suspensos sem bloquear um encadeamento

Ouvi pessoas dizerem "suspender a função". Mas acho que é a corotina que fica suspensa porque aguarda o término da função? "suspender" geralmente significa "cessar operação"; nesse caso, a corotina está ociosa.

Devemos dizer que a corotina está suspensa?

Qual rotina é suspensa?

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

Para continuar a analogia, waitit () pode ser uma função de suspensão (portanto, também pode ser chamada de dentro de um bloco assíncrono {}) que suspende uma corotina até que algum cálculo seja feito e retorne seu resultado:

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

Ele diz "que suspende uma corotina até que algum cálculo seja feito", mas a corotina é como um fio leve. Portanto, se a corotina estiver suspensa, como o cálculo pode ser feito?

Nós vemosawait é chamadocomputation, então pode serasync que retornaDeferred, o que significa que ele pode iniciar outra corotina

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

A citação dizque suspende uma corotina. Quer dizersuspend o exteriorasync corotina oususpend o interiorcomputation corotina?

Fazsuspend significa que enquanto exteriorasync a rotina está esperando (await) para o interiorcomputation rotina terminar, ele (a parte externaasync coroutine) ocioso (daí o nome suspender) e retorna o encadeamento para o conjunto de encadeamentos e quando o filhocomputation terminada com a corotina,async acorda, pega outro fio da piscina e continua?

A razão de eu mencionar a discussão é por causa dehttps://kotlinlang.org/docs/tutorials/coroutines-basic-jvm.html

O encadeamento é retornado ao pool enquanto a corotina está aguardando e, quando a espera é concluída, a corotina continua em um encadeamento livre no pool

questionAnswers(3)

yourAnswerToTheQuestion